我很难理解我的代码究竟出了什么问题。我不是一个好的开发人员,我还在学习,所以所有提示都非常受欢迎! :)
所以我正在做的是有一个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”语句。
我如何在这方面工作?非常感谢。
答案 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;
}
}
}