Код предназначен для вопроса с множественным выбором. Если ответ неверен, пользователь должен попробовать, пока не найдет правильный ответ. Когда ответ правильный, проблем нет, но если он неправильный, он зависает и продолжает говорить: «Ваш ответ неверен!». Что я должен делать?
import java.util.*;
public class Question {
public static void main(String[] args) {
System.out.println();
System.out.println("Question 1");
System.out.println();
System.out.println("What is 2+2?");
System.out.println("A. 2");
System.out.println("B. 4");
System.out.println("C. 6");
System.out.println("D. 8");
Scanner input = new Scanner(System.in);
char getAnswerFromUser = input.next().charAt(0);
char answer = 'B';
boolean isAnswerTrue = false;
while(!isAnswerTrue) {
if (getAnswerFromUser == answer ) {
System.out.println("Your answer is correct!");
isAnswerTrue = true;
} else{
System.out.println("Your answer is incorrect!");
isAnswerTrue = false;
}
}
}
}
Если ответ неверный, вам просто нужно позволить пользователю ввести новый ответ и назначить его getAnswerFromUser
внутри цикла.
Помимо написания программ, вы также должны научиться использовать функции отладки вашей IDE, например. пошаговое выполнение вашей программы. Затем вы увидите, что после первоначального ввода он больше никогда не доходит до оператора, в котором он пытается прочитать новый ввод, но продолжает зацикливаться.
На самом деле вы не получаете новый ответ от пользователя внутри вашего цикла. Вы получаете его только один раз, в строке, где вы определяете переменную getAnswerFromUser. Вам действительно нужно получить новый ответ. Я предлагаю поместить его в отдельный метод, чтобы этот шаг был чистым от шага, на котором вы используете этот ответ.
Вы читаете
getAnswerFromUser
перед своим циклом и не обновляете его внутри своего цикла.