Condition Else being called at the wrong time

Asked

Viewed 69 times

1

I’m currently having problems with a work code. My ELSE class is always running, but only when I choose the option for the first IF.

import java.util.Scanner;

public class BikeFit2
{
public static void main( String[] args ) {
    Scanner input = new Scanner( System.in);
    String tipoBike, mtb, spd;
    double antebraco, cavalo, tamanhoQuadro, distanciaSelimQuidao;
    double diferencaSelimQuidao, tamanhoPedivela;
    int elasticidade, tamanhoPe, idade, freqMin, freqMax;

    System.out.println("Bem vindo!");
    System.out.println ("Insira o tipo de bicicleta, sendo: \n\rMTB para Mountain Bike  \n\rSPD para Road Bike");
    tipoBike = input.nextLine();
    System.out.println("Insira a idade do ciclista:");
        idade = input.nextInt();

    spd = "SPD";
        if (tipoBike.equals(spd)){
            System.out.println ("Insira o comprimento do Cavalo:");
            cavalo = input.nextDouble();
            System.out.printf ("%s tamanho cavalo \n\r", cavalo);

            System.out.println("Insira o tamanho do Antebraço");
            antebraco = input.nextDouble();
            System.out.printf ("%s tamanho Antebraço\n\r", antebraco);

            System.out.println("Insira o valor da Elasticidade de 0 a 10");
            elasticidade = input.nextInt();
            System.out.printf ("%s valor elasticidade\n\r", elasticidade);

            System.out.println("Insira a numeração do tenis\n\r");
            tamanhoPe = input.nextInt();
            System.out.printf ("%s tamanho tenis:\n\r", tamanhoPe);

            System.out.printf("%s é idade do ciclista", idade);
    }
        mtb = "MTB";
        if (tipoBike.equals(mtb)){
            System.out.println ("Insira o comprimento do Cavalo:");
            cavalo = input.nextDouble();
            System.out.printf ("%s tamanho cavalo \n\r", cavalo);

            System.out.println("Insira o tamanho do Antebraço");
            antebraco = input.nextDouble();
            System.out.printf ("%s tamanho Antebraço\n\r", antebraco);

            System.out.println("Insira o valor da Elasticidade de 0 a 10");
            elasticidade = input.nextInt();
            System.out.printf ("%s valor elasticidade\n\r", elasticidade);

            System.out.println("Insira a numeração do tenis\n\r");
            tamanhoPe = input.nextInt();
            System.out.printf ("%s tamanho tenis:\n\r", tamanhoPe);

            System.out.printf("%s é idade do ciclista", idade);
    }


        else{
            System.out.println("Opção selecionada errada, tente de novo!");
        }
    }
}

Any help will be most welcome!

  • I may be quite mistaken, but that your IS is only on the last if. You would have to make an Else if in MTB and then yes Else.

1 answer

0


Your condition else is being called why the tipoBike is different from "MTB". You should put a else before.

import java.util.Scanner;

public class BikeFit2
{
    public static void main( String[] args ) {
        Scanner input = new Scanner( System.in);
        String tipoBike, mtb, spd;
        double antebraco, cavalo, tamanhoQuadro, distanciaSelimQuidao;
        double diferencaSelimQuidao, tamanhoPedivela;
        int elasticidade, tamanhoPe, idade, freqMin, freqMax;

        System.out.println("Bem vindo!");
        System.out.println ("Insira o tipo de bicicleta, sendo: \n\rMTB para Mountain Bike  \n\rSPD para Road Bike");
        tipoBike = input.nextLine();
        System.out.println("Insira a idade do ciclista:");
            idade = input.nextInt();

        spd = "SPD";
        mtb = "MTB";

        if (tipoBike.equals(spd)){
            System.out.println ("Insira o comprimento do Cavalo:");
            cavalo = input.nextDouble();
            System.out.printf ("%s tamanho cavalo \n\r", cavalo);

            System.out.println("Insira o tamanho do Antebraço");
            antebraco = input.nextDouble();
            System.out.printf ("%s tamanho Antebraço\n\r", antebraco);

            System.out.println("Insira o valor da Elasticidade de 0 a 10");
            elasticidade = input.nextInt();
            System.out.printf ("%s valor elasticidade\n\r", elasticidade);

            System.out.println("Insira a numeração do tenis\n\r");
            tamanhoPe = input.nextInt();
            System.out.printf ("%s tamanho tenis:\n\r", tamanhoPe);

            System.out.printf("%s é idade do ciclista", idade);
        }
        else if (tipoBike.equals(mtb)){
            System.out.println ("Insira o comprimento do Cavalo:");
            cavalo = input.nextDouble();
            System.out.printf ("%s tamanho cavalo \n\r", cavalo);

            System.out.println("Insira o tamanho do Antebraço");
            antebraco = input.nextDouble();
            System.out.printf ("%s tamanho Antebraço\n\r", antebraco);

            System.out.println("Insira o valor da Elasticidade de 0 a 10");
            elasticidade = input.nextInt();
            System.out.printf ("%s valor elasticidade\n\r", elasticidade);

            System.out.println("Insira a numeração do tenis\n\r");
            tamanhoPe = input.nextInt();
            System.out.printf ("%s tamanho tenis:\n\r", tamanhoPe);

            System.out.printf("%s é idade do ciclista", idade);
        }
        else{
            System.out.println("Opção selecionada errada, tente de novo!");
        }
    }
}

I advise you to use one switch, improves the readability of the code. Another tip, beware of the tabulation of your code.

import java.util.Scanner;

public class BikeFit2
{
    public static void main( String[] args ) {
        Scanner input = new Scanner( System.in);
        String tipoBike, mtb, spd;
        double antebraco, cavalo, tamanhoQuadro, distanciaSelimQuidao;
        double diferencaSelimQuidao, tamanhoPedivela;
        int elasticidade, tamanhoPe, idade, freqMin, freqMax;

        System.out.println("Bem vindo!");
        System.out.println ("Insira o tipo de bicicleta, sendo: \n\rMTB para Mountain Bike  \n\rSPD para Road Bike");
        tipoBike = input.nextLine();
        System.out.println("Insira a idade do ciclista:");
        idade = input.nextInt();


        switch (tipoBike)
        {
            case "SPD":
                System.out.println ("Insira o comprimento do Cavalo:");
                cavalo = input.nextDouble();
                System.out.printf ("%s tamanho cavalo \n\r", cavalo);

                System.out.println("Insira o tamanho do Antebraço");
                antebraco = input.nextDouble();
                System.out.printf ("%s tamanho Antebraço\n\r", antebraco);

                System.out.println("Insira o valor da Elasticidade de 0 a 10");
                elasticidade = input.nextInt();
                System.out.printf ("%s valor elasticidade\n\r", elasticidade);

                System.out.println("Insira a numeração do tenis\n\r");
                tamanhoPe = input.nextInt();
                System.out.printf ("%s tamanho tenis:\n\r", tamanhoPe);

                System.out.printf("%s é idade do ciclista", idade);
                 break;

            case "MTB":
                System.out.println ("Insira o comprimento do Cavalo:");
                cavalo = input.nextDouble();
                System.out.printf ("%s tamanho cavalo \n\r", cavalo);

                System.out.println("Insira o tamanho do Antebraço");
                antebraco = input.nextDouble();
                System.out.printf ("%s tamanho Antebraço\n\r", antebraco);

                System.out.println("Insira o valor da Elasticidade de 0 a 10");
                elasticidade = input.nextInt();
                System.out.printf ("%s valor elasticidade\n\r", elasticidade);

                System.out.println("Insira a numeração do tenis\n\r");
                tamanhoPe = input.nextInt();
                System.out.printf ("%s tamanho tenis:\n\r", tamanhoPe);

                System.out.printf("%s é idade do ciclista", idade);

                break;
             default:
                System.out.println("Opção selecionada errada, tente de novo!");
        }               

    }
}
  • 1

    Why the negative? What’s the problem with the answer?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.