Почему мой код игнорирует оператор else if? - PullRequest
0 голосов
/ 24 апреля 2020

newb ie in java здесь, просто возиться с моим проектом и заметил, что мой вывод кода не выполняет мой else, если l oop. если я введу неправильный ответ на мою викторину (A или C), выходных данных не будет, и он сразу перейдет к моему коду блока попытки.

однако, если я введу правильный ответ, он выведет правильный код, только если я введу неправильный ответ.

  @SuppressWarnings("resource")
                    Scanner keyboardInput = new Scanner(System.in);

                    String answer1 = keyboardInput.nextLine(); 
                    if(answer1.equals("B")) {
                    correctCount++;
                    System.out.println("----Thats the correct answer!----  +");
                    }
                    else if(answer1.equals("A" + "C")) {
                    System.out.println("Wrong answer, sorry");
                }


                    try{
                     doc.getDocumentElement().normalize();
                     System.out.println("Next Question");
                    NodeList q2 = doc.getElementsByTagName("q2");


Спасибо за любую помощь! и я знаю, что мой код может быть грязным ага

Ответы [ 3 ]

1 голос
/ 24 апреля 2020

if(answer1.equals("A" + "C")) -> Проверяет, равен ли answer1 «A C». Вместо оператора OR (||) вы объединяете две строки. Попробуйте if(answer1.equals("A") || answer1.equals("C"))

0 голосов
/ 24 апреля 2020

Хорошо, поэтому сначала вы не проверяете, является ли ответ A ИЛИ C, вы проверяете, является ли ответ «A C». Чтобы достичь того, что вам нужно, вы можете использовать следующий код

if(answer1.equals("B")) {
     correctCount++;
     System.out.println("----Thats the correct answer!----  +");
} else if(answer1.equals("A") || answer1.equals("C")) {
     System.out.println("Wrong answer, sorry");
}

Но, честно говоря, вам даже не понадобится оператор else if, потому что любое письмо, которое он пишет, не является B, неверно. Если вы не хотите обрабатывать «несуществующий ответ» тоже

do {
   System.out.println("Please choose A, B or C");
   String answer1 = keyboardInput.nextLine();
} while (!answer1.equals("A") && !answer1.equals("B") && !answer1.equals("C"));

if (answer1.equals("B")) {
   //code...
} else {
   //code...
}

Таким образом, вам даже не придется проверять, является ли это A или C, потому что вы уже проверили, было ли это AB или C так что, если это не B, это будет либо два неправильных ответа

0 голосов
/ 24 апреля 2020

else if(answer1.equals("A" + "C")) {

означает:

else if(answer1.equals("AC")) {

"A" + "C" - это конкатенация строк, "A" + "C "производит новую строку" A C ".

...