Java input.nextLine(),在while循环中包含字符串
我很难理解我的代码到底出了什么问题。我不是一个好的开发人员,我还在学习,所以所有的提示都非常受欢迎!: 所以我要做的是有一个while循环来检查用户是否给了扫描器一个特定的字母。如果有,循环结束。如果没有,它会继续问这个问题 我的代码如下:Java input.nextLine(),在while循环中包含字符串,java,string,loops,while-loop,user-input,Java,String,Loops,While Loop,User Input,我很难理解我的代码到底出了什么问题。我不是一个好的开发人员,我还在学习,所以所有的提示都非常受欢迎!: 所以我要做的是有一个while循环来检查用户是否给了扫描器一个特定的字母。如果有,循环结束。如果没有,它会继续问这个问题 我的代码如下: Scanner userInput = new Scanner(System.in); String userAnswer = userInput.nextLine(); boolean isTrue = true; while (isTrue)
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语句
我该如何在这件事上自圆其说?提前非常感谢。您需要指定nextLine的返回值
您没有将用户输入分配给循环中的userAnswer变量 改变
userInput.nextLine();
到
您必须重新分配该值:
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;
}
}
字符串在JavaAPI中是不可变的对象。所以,当你们下次阅读时,你们必须重新赋值
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;
}
}
}
您需要在循环内处理扫描仪。否则,您将无法读取用户写入的下一个字符。您需要使用userAnswer=userInput.readLine,否则您的答案将永远不会更改。@davidxxx可能。我已经移除了,就是这样,太棒了!非常感谢@Grv21如果这个答案对你有帮助,请随意接受
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;
}
}
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;
}
}
}