而Java中的循环问题

时间:2013-04-05 21:28:36

标签: java

这是我的一些代码。

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并且条件没有达到?在此之后,它继续代码:

3 个答案:

答案 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));
}