所以,我在这里有一个小程序,我一直在收到输入不匹配错误。我将在代码下面发布错误消息。说实话,我有0线索为什么会出现错误。我检查了所有必需的变量都分配了正确的类型。如果我理解正确,当您尝试输入不期望的内容时会发生上述错误,对吧? (双而不是int或其他)。我可能在某个地方出现了一些我因某些原因无法看到的愚蠢错误,所以我很感激你的帮助。
Scanner sc = new Scanner(System.in);
int enEur = 0;
int dvaEur = 0;
boolean bankrot = false;
int placilo;
while (sc.hasNextInt() || bankrot == false){
placilo = sc.nextInt();
if(placilo == 1){
enEur += placilo;
}
else{
enEur --;
bankrot = test(enEur);
dvaEur ++;
}
}
所以,这是我的main()方法的内容。该行中出现错误:placilo = sc.nextInt()。这是所述错误的副本:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at evroSop.main(evroSop.java:16)
我输入的输入基本上是一行单独的整数,如:1 1 1 1 2 1 ......等等。我有不同的例子,所有这些都是不同长度的整数行。
Cherio,George
答案 0 :(得分:1)
条件while (sc.hasNextInt() || bankrot == false)
表示只要有更多输入或 bankrot
仍然为假,您就会继续尝试从扫描仪读取数据。因此,如果您的输入用完但仍未破产,您将获得一个例外,因为即使没有更多的输入,您也会尝试读取下一个输入。
条件应该是和,而不是或。
答案 1 :(得分:0)
将该行读作String并将其拆分为int []
在hasNext()调用之后,
String str = sc.nextLine();
并将此String拆分为int []
示例代码:
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str = sc.nextLine();
String strArray[] = str.split(" ");
int intArray[] = new int[strArray.length];
for (int i = 0; i < intArray.length ; i++) {
intArray[i] = Integer.parseInt(strArray[i]);
}
for (int j : intArray) {
System.out.println(j);
}
}
输入:
1 123 456
输出:
1
123
456