在添加到列表之前检查输入是否为int

时间:2018-08-25 16:04:32

标签: java arraylist int

我正在尝试通过将每个数字添加到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;
    }
}

编辑:对不起,我忘记指定注释掉的行是导致问题的那一行。

2 个答案:

答案 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

完成