我正在处理这段代码,它以整数作为测试用例,然后为每个测试用例获取一个字符串和一个整数 但我一直得到这个例外:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at OverSizedPancakeFlipper.main(OverSizedPancakeFlipper.java:18)
我的代码基本上是这样的:
Scanner userInput = new Scanner(System.in);
int T=userInput.nextInt();
userInput.nextLine();
while(T-->0){
String S=userInput.nextLine();
char[] ch = S.toCharArray();
int K=userInput.nextInt();
//code does work here
}
如果您需要任何其他信息,请与我们联系。感谢所有帮助。
答案 0 :(得分:0)
Scanner userInput = new Scanner(System.in);
do{
String s=userInput.nextLine();
char[] ch = s.toCharArray();
int k=userInput.nextInt();
//code does work here
}while(k==0);
你可以用这个......
答案 1 :(得分:0)
将您的代码更改为
while(variableName==0){
...
}
在编写while
循环时:您希望确保循环在当前点停止,因此它永远不会
答案 2 :(得分:0)
更改此行:
int K=userInput.nextInt();
对此:
int K=Integer.parseInt(userInput.nextLine());
当然,您需要处理NumberFormatException。
有关此更改的说明,请参阅重复的问题Scanner is skipping nextLine() after using next(), nextInt() or other nextFoo() methods
简而言之,问题是您忘记在整数后读取换行符。那么nextLine将获取空字符串并使用换行符。然后nextInt将失败,因为它位于无效内容。