我正在尝试通过将每个数字添加到Integer列表中来将输入的数字拆分为数字。我必须输入非整数才能阻止扫描程序查找更多整数。但是,当我输入非整数时,总是会出现此错误:
Exception in thread "main" java.util.InputMismatchException
我知道这是因为我期望一个int却又得到了另一种输入,但是我不知道为什么会这样。 if(inputtedText.hasNextInt())
是否应该阻止这种情况发生?
List<Integer> digits = new ArrayList<Integer>();
Scanner inputtedText = new Scanner(System.in);
String stringOfInputtedNumber = "";
while(true) {
if(inputtedText.hasNextInt()) {
stringOfInputtedNumber += inputtedText.nextInt();
// digits.add(inputtedText.nextInt());
} else {
break;
}
}
编辑:对不起,我忘记指定注释掉的行是导致问题的那一行。
答案 0 :(得分:0)
尝试保存文件,重新编译并尝试再次运行。 我在我的机器上尝试了您的代码,它按预期运行 没有inputMismatch异常,也不需要try块
答案 1 :(得分:-2)
是的,hasNextInt()
可以解决此问题,但是您还应该记住关闭IO类(例如Scanner)。
List<Integer> digits = new ArrayList<Integer>();
try (Scanner inputtedText = new Scanner("123123123A")) {
String stringOfInputtedNumber = "";
while (true) {
if (inputtedText.hasNextInt()) {
stringOfInputtedNumber += inputtedText.nextInt();
} else {
break;
}
}
}
System.out.println(stringOfInputtedNumber);
可以使用try-with-resources
完成