提问人:Brian Miller 提问时间:7/5/2022 最后编辑:Brian Miller 更新时间:7/5/2022 访问量:71
While 循环一直持续到触发特定用户输入
While loops continues until specific user input is triggered
问:
该程序将一个 String 后跟一个整数作为输入,然后使用输入输出一个句子。程序重复,直到键入字符串“quit”。问题似乎出在 nextLine() 和 nextInt() 上,但我无法理解它。我收到以下错误:
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at LabProgram.main(LabProgram.java:8)
import java.util.Scanner;
public class LabProgram {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String inputStr = in.nextLine();
int inputInt = in.nextInt();
while(!inputStr.equals("quit")){
System.out.println("Eating " + inputInt + " " + inputStr + " a day keeps you happy and healthy.");
}
}
}
感谢您的帮助,以下代码成功输出:
String inputStr = "";
int inputInt;
while(!inputStr.equals("quit")){
inputStr = in.next();
inputInt = in.nextInt();
in.nextLine(); //this line throws an exception but
//program still outputs correctly
System.out.println("Eating " + inputInt + " " + inputStr + " a day keeps you happy and healthy.");
}
}
}
答:
1赞
Japhei
7/5/2022
#1
您仅在开始时使用扫描仪,然后将值保存在变量中。因此,您只使用循环中的值。因此,您需要让用户在循环的每次迭代中输入新的输入。
移动并进入您的循环:inputStr
inputInt
String inputStr = "";
int inputInt;
while(!inputStr.equals("quit")){
inputStr = in.nextLine();
inputInt = in.nextInt();
System.out.println("Eating " + inputInt + " " + inputStr + " a day keeps you happy and healthy.");
}
在addiditon中,您必须确保输入正确的输入。第一个 (=String) 可以是键盘上的任何内容。第二个输入必须是整数,因此只能使用像 这样的数字。这就是你的错误的来源。1, 2, 230, -4, ...
评论
2赞
sorifiend
7/5/2022
请注意,您将在使用 时遇到问题,请参阅此处 stackoverflow.com/questions/13102045/...基本上在使用后,您需要使用nextInt
nextInt()
in.nextLine();
0赞
Brian Miller
7/5/2022
明白了。当我输入字符串时,按回车键,然后输入程序输出的整数。当用户输入字符串时,我需要它输出,点击空格,然后是整数。
0赞
Brian Miller
7/5/2022
感谢所有的帮助。使用 next() 而不是 nextLine() 解决了我的输入问题。
-1赞
Midnightfury
7/5/2022
#2
您的程序只要求输入一次,因此永远不会等于退出,因为设置一次并且永远不会更改。inputStr
inputStr
评论