这是我的一些代码。
System.out.print("Would you like to continue (Y/N)?");
while (!Anwser.equals("Y")){
Anwser = UserInput.next();
System.out.println("Would you like to continue (Y/N)?");
}
这就是答案。
> Would you like to continue (Y/N)?
> Would you like to continue (Y/N)?
为什么我打印出来虽然输入了Y并且条件没有达到?在此之后,它继续代码:
答案 0 :(得分:6)
while
循环执行零次或多次。
do while
循环执行一次或多次。
对于延续问题,只要它是'Y'或'y',您就不关心用户输入的内容。
其他任何东西都会终止程序。
还有一个延续问题,程序通常想运行一次。所以将代码包装在do while
循环中。
do {
// Your code goes here
System.out.print("Would you like to continue (Y/N)?");
Anwser = UserInput.next();
} while (answer.equalsIgnoreCase( "Y"));
至于为什么你的代码不起作用。也许你应该在循环开始之前为Answer分配一个值。
答案 1 :(得分:2)
尝试更改“Anwser”变量的值,并将其替换为用户的输入
像这样:System.out.print("Would you like to continue (Y/N)?");
Anwser = UserInput.next();
while (!Anwser.equals("Y")){
System.out.println("Would you like to continue (Y/N)?");
Anwser = UserInput.next();
}
答案 2 :(得分:1)
它打印两次的原因是因为第一行是在循环外打印问题,然后测试答案(未捕获,然后依赖于初始化参考变量)然后进入while循环首先从用户输入到最后一个问题,然后再次打印问题。
System.out.print("Would you like to continue (Y/N)?"); //prints to screen
//no input captured before test
while (!Anwser.equals("Y")){ //tests the reference variable
Anwser = UserInput.next(); //captures user input after test
System.out.println("Would you like to continue (Y/N)?"); //asks question again
}
while循环是一个预测试循环,这意味着它在运行代码之前测试条件。使用此代码,您将测试对第一个问题的响应以回答第二个问题。所以,如果你想保持while循环,那么你真正需要做的就是把问题放在循环中,如下所示:
while (!Anwser.equalsIgnoreCase("Y"))
{
System.out.println("Would you like to continue (Y/N)?");
Anwser = UserInput.next();
}
此外,由于您只是捕获一个字符,可能不是使String对象保存字符文字,而是尝试使用char变量。这是解决方案:
char answer = ' ';
Scanner userInput = new Scanner(System.in);
while (answer != 'N') // check for N to end
{
System.out.println("Would you like to continue (Y/N)?");
answer = Character.toUpperCase(userInput.nextLine().charAt(0));
}