While循环嵌套if-else java
我的while循环有问题。它需要不断地问这个问题,直到答案是正确的。有人能给点建议吗While循环嵌套if-else java,java,if-statement,while-loop,Java,If Statement,While Loop,我的while循环有问题。它需要不断地问这个问题,直到答案是正确的。有人能给点建议吗 public class QuizW { public static void main(String[] args) { String question = "What is the capital of Australia? \n"; question += "A. Sydney\n"; question
public class QuizW
{
public static void main(String[] args)
{
String question = "What is the capital of Australia? \n";
question += "A. Sydney\n";
question += "B. Melburne\n";
question += "C. Perth\n";
question += "D. Cannberra\n";
question += "E. Brisbane\n";
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);
}
}
}
您可以这样做:
publicstaticvoidmain(字符串[]args){
扫描仪=新的扫描仪(System.in);
String question=“澳大利亚的首都是什么?\n”
+“A.悉尼\n”
+“B.墨尔本\n”
+“C.珀斯\n”
+“D.堪培拉\n”
+“E.布里斯班\n”;
System.out.println(问题);
字符串应答=scanner.next().toUpperCase();
while(true){
如果(答案等于(“D”)){
系统输出打印项次(“正确”);
打破
}else if(answer.equals(“A”)| answer.equals(“B”)| answer.equals(“C”)| answer.equals(“E”)){
System.out.println(“回答错误,再试一次”);
}否则{
System.out.println(“输入错误”);
}
答案=scanner.next().toUpperCase();
}
}
我只使用控制台,不使用jpannes,但您可以获得逻辑
结果控制台:
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)
如果你在开始时要求答案,而你只需写一次:
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");
}
}
它还解决了您的错误:)您忘记了在循环中更新答案->
answer=JOptionPane.showInputDialog(问题)代码>非常感谢。我仍然缺少更新答案=answer.toUpperCase()的内容;JOptionPane.showInputDialog(问题);在回答错误后进行更新?如果你想再次显示一个问题,你必须把它放在while循环的开头,不要在while循环之前使用它。非常感谢。你帮我省了几个小时的睡眠时间。你的虚拟啤酒或咖啡我请客。它是如此简单…使它。谢谢你的帮助