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字符,而不是整个字符。输入的设置方式我不需要,所以我修复了它,现在它工作了。谢谢