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

Java 在添加到列表之前检查输入是否为int,java,arraylist,int,Java,Arraylist,Int,我试图通过将每个数字添加到整数列表中,将输入的数字拆分为数字。我必须输入一个非整数,以阻止扫描仪查找更多整数。但是,当我输入非整数时,总是会出现以下错误: Exception in thread "main" java.util.InputMismatchException 我知道这是因为我期望一个int,但得到另一种类型的输入,但我不知道为什么会这样。if(inputedText.hasnetint())不应该阻止这种情况发生吗 List<Integer> digits = ne

我试图通过将每个数字添加到整数列表中,将输入的数字拆分为数字。我必须输入一个非整数,以阻止扫描仪查找更多整数。但是,当我输入非整数时,总是会出现以下错误:

Exception in thread "main" java.util.InputMismatchException
我知道这是因为我期望一个int,但得到另一种类型的输入,但我不知道为什么会这样。
if(inputedText.hasnetint())
不应该阻止这种情况发生吗

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;
    }
}
List digits=new ArrayList();
扫描仪InputedText=新扫描仪(System.in);
字符串StringOfInputdNumber=“”;
while(true){
if(inputedText.hasNextInt()){
StringOfInputdNumber+=InputedText.nextInt();
//digits.add(inputedText.nextInt());
}否则{
打破
}
}
编辑:很抱歉,我忘记指定注释掉的行是导致问题的行。

是的,
hasnetint()
可以解决这个问题,但是您还应该记住关闭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);
List digits=new ArrayList();
尝试(扫描仪输入文本=新扫描仪(“123A”)){
字符串StringOfInputdNumber=“”;
while(true){
if(inputedText.hasNextInt()){
StringOfInputdNumber+=InputedText.nextInt();
}否则{
打破
}
}
} 
System.out.println(stringof输入编号);

可以使用try with resources来完成此操作。请尝试保存文件,重新编译并再次运行。 我在我的机器上试过你的代码,它工作正常
没有输入不匹配异常,也不需要try块

是的,
hasnetint()
应该可以防止输入不匹配异常,它确实可以。您具体键入了什么导致该代码出现错误?--你确定你在运行那个代码吗?看起来不错。再次尝试编译文件,然后运行它。我正在使用EclipseIDE,只是在IDE中测试它,而没有实际导出它。这可能是问题所在吗@user3091574@Andreas我又看了一遍代码,意识到我在使用nextInt()时认为它只返回一个since字符,而不是整个字符。输入的设置方式我不需要,所以我修复了它,现在它工作了。谢谢@user3091574我又看了一遍代码,意识到我在使用nextInt()时认为它只返回一个since字符,而不是整个字符。输入的设置方式我不需要,所以我修复了它,现在它工作了。谢谢我又看了一遍代码,意识到我在使用nextInt()时认为它只返回一个since字符,而不是整个字符。输入的设置方式我不需要,所以我修复了它,现在它工作了。谢谢