While循环嵌套if-else-java



我的while循环有问题。它需要不断地问这个问题,直到答案正确为止。有人能提供建议吗?

public class QuizW
{
public static void main(String[] args)
{
String question = "What is the capital of Australia? n";
question += "A. Sydneyn";
question += "B. Melburnen";
question += "C. Perthn";
question += "D. Cannberran";
question += "E. Brisbanen";
String answer = JOptionPane.showInputDialog(question);
answer = answer.toUpperCase();
int answerCorrect = 0;

while (answerCorrect == 0)
{
if (answer.equals("D"))
{
JOptionPane.showMessageDialog(null, "Correct!");
break;
}
else if (answer.equals("A") || answer.equals("B") || answer.equals("C") || answer.equals("E"))
{
JOptionPane.showMessageDialog(null, "Incorrect. Please try again.");
}
else
{
JOptionPane.showMessageDialog(null, "Invalid answer. Please enter A, B, C, D, or E.");
}
JOptionPane.showInputDialog(question);
}
}
}

您可以这样做:

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String question = "What is the capital of Australia? n"
+ "A. Sydneyn"
+ "B. Melbournen"
+ "C. Perthn"
+ "D. Canberran"
+ "E. Brisbanen";
System.out.println(question);
String answer = scanner.next().toUpperCase();
while (true) {
if (answer.equals("D")) {
System.out.println("Correct");
break;
} else if (answer.equals("A") || answer.equals("B") || answer.equals("C") || answer.equals("E")) {
System.out.println("Wrong answer, try again.");
} else {
System.out.println("Incorrect input");
}
answer = scanner.next().toUpperCase();
}
}

我只使用控制台,没有JPannel,但你可以获得逻辑

结果控制台:

What is the capital of Australia? 
A. Sydney
B. Melburne
C. Perth
D. Cannberra
E. Brisbane
a
Wrong answer, try again.
b
Wrong answer, try again.
p
Incorrect input
d
Correct

要缩短检查工作值,可以使用:

String[] wrong = {"A", "B", "C", "E"};
...
Arrays.asList(wrong).contains(answer)

如果你在while的开头询问答案,你只需要写一次:

String answer =null;
while (true) {
answer = scanner.next().toUpperCase();
if (answer.equals("D")) {
System.out.println("Correct");
break;
} else if (answer.equals("A") || answer.equals("B") || answer.equals("C") || answer.equals("E")) {
System.out.println("Wrong answer, try again.");
} else {
System.out.println("Incorrect input");
}
}

它还解决了您的错误:(

最新更新