else condition being called at the wrong time

1

I'm currently having trouble with a job code. My ELSE class is always being executed, 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 greatly appreciated!

    
asked by anonymous 14.09.2016 / 19:09

1 answer

0

Your else condition is being called because 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 switch , which improves the readability of the code. Another tip, beware of tabbing 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!");
        }               

    }
}
    
14.09.2016 / 19:22