input.nextLine()在while循环中有一个字符串

时间:2017-08-08 07:27:10

标签: java string loops while-loop user-input

我很难理解我的代码究竟出了什么问题。我不是一个好的开发人员,我还在学习,所以所有提示都非常受欢迎! :)

所以我正在做的是有一个while循环来检查用户是否给了Scanner某个字母。如果有,则循环结束。如果没有,它会不断再问这个问题。

我的代码如下:

Scanner userInput = new Scanner(System.in);
String userAnswer = userInput.nextLine();
boolean isTrue = true;

     while (isTrue){
         if (userAnswer.equals("e")){
             System.out.println("Wrong, try again");
             userInput.nextLine();
         } else if (userAnswer.equals("k")) {
             System.out.println("That's right!"); 
             isTrue = false;
             break;
         }      
     } 

它有效,有点。如果用户给出答案“k”作为第一个答案,则打印出“那是对的!”然后打破循环。如果用户给出答案“e”作为第一个答案,则打印出“错误,再试一次”并给出一个新行再次回答,但如果你写了正确的字母,即“k”,它仍会打印出来“错误,再试一次”循环,不会跳转到“else if”语句。

我如何在这方面工作?非常感谢。

4 个答案:

答案 0 :(得分:5)

您必须重新分配值:

while (isTrue){
     if (userAnswer.equals("e")){
         System.out.println("Wrong, try again");
         userAnswer  = userInput.nextLine();
     } else if (userAnswer.equals("k")) {
         System.out.println("That's right!"); 
         isTrue = false;
     }      
 } 

答案 1 :(得分:3)

您没有将用户输入分配给循环中的userAnswer变量。

更改

userInput.nextLine();

userAnswer = userInput.nextLine();

答案 2 :(得分:2)

您需要指定nextLine

的返回值
userAnswer = userInput.nextLine();

答案 3 :(得分:0)

String是Java API中的不可变对象。因此,当您下次阅读时,您必须重新分配价值。

public static void main(String[] args) {
    Scanner userInput = new Scanner(System.in);
    String userAnswer = userInput.nextLine();
    boolean isTrue = true;
    while (isTrue) {
        if (userAnswer.equals("e")) {
            System.out.println("Wrong, try again");
            userAnswer = userInput.nextLine();
        } else if (userAnswer.equals("k")) {
            System.out.println("That's right!");
            isTrue = false;
            break;
        }
    }
}