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



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

所以我正在做的是有一个while循环来检查用户是否给了扫描仪一个特定的字母。如果有,循环结束。如果没有,它会继续再次询问问题。

我的代码如下:

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"语句。

我该如何解决这个问题?提前非常感谢。

您必须重新分配值:

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;
}      
} 

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

改变

userInput.nextLine();

userAnswer = userInput.nextLine();

你需要分配返回值nextLine

userAnswer = userInput.nextLine();

字符串是 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;
}
}
}

相关内容

  • 没有找到相关文章

最新更新