У меня есть какой-то очень простой код, но я вырываю волосы.Я просто пытаюсь получить возврат AskQuestion () после того, как пользователь дает один ввод, но я не понимаю, почему этот код Java требует 2 ввода перед возвратом.Первоначально я пытался решить эту проблему с помощью цикла while, но я удалил все и обнаружил, как мне кажется, коренную проблему - возврат происходит только после второго ввода, но я не могу понять, почему.
import java.util.*;
public class RelationalQuestion extends Question {
RelationalQuestion(Animal[] animals, Animal answer) {
super(animals, answer);
}
public boolean AskQuestion() {
Scanner q = new Scanner(System.in);
boolean waitingForValidAnswer = true;
boolean decideToDecrement = true;
System.out.println("What do you want to know?");
System.out.println("\t1. Is it heavier than another animal?");
System.out.println("\t2. Is it taller than another animal?");
System.out.println("\t9. Go back");
if (q.hasNext());
String relationalQuestionNumber = q.nextLine();
return decideToDecrement;
}// end AskQuestion
}// end RelationalQuestion
Не думаю, что это влияет на это, но вот как я вызываю AskQuestion () из другого файла.
if (input.equals("1")) {
RelationalQuestion q1 = new RelationalQuestion (animalArray, answer);
q1.AskQuestion();
if (q1.AskQuestion() == false) {
questionsLeft++; //neutalize decrement of questions if returned false
}
}