我试图通过将每个数字添加到整数列表来将输入的数字拆分为其数字。我必须输入一个非整数,以阻止扫描仪寻找更多的整数。但是,当我输入一个非整数时,我总是得到这个错误:
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;
}
}
编辑:抱歉,我忘记指定注释掉的行是导致问题的行。
是的,hasNextInt()
可以解决这个问题,但是您还应该记住关闭诸如Scanner之类的IO类。
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);
可以使用资源尝试来完成
尝试保存您的文件,重新编译它,并尝试再次运行它。我在我的机器上尝试了你的代码,它和预期的一样工作没有输入不匹配异常,不需要尝试块
问题内容: 如何检查给定的输入控件是否为空?我知道该字段上有一个属性,该属性告诉您给定的字段最初是否为空,但是如果有人填充该字段并再次提取整个内容该怎么办? 我认为上述功能是必要的,因为它对告知用户该字段必不可少。 任何想法将不胜感激! 问题答案: 很简单: 您也可以使用代替,如果这对您来说更自然。 更好的替代方法可能是真正利用Angular的形式能力: 在此处更新了Plnkr。
问题内容: 我想知道是否有人知道使用和检查列表是否为空的方法? 我看到的最好方法就是使用JUnit: 但是我希望在Hamcrest有某种方法可以做到这一点。 问题答案: 好吧,总有 …但是我想那不是你的意思:) 或者: 在该类中是静态的。请注意,必须将转换为,这要归功于Hamcrest 1.2强大的泛型。 hamcrest 1.3可以使用以下进口产品
问题内容: 我正在做一个基本的Java控制台应用程序,我想在按Enter之前检查用户是否提供了任何输入。我正在使用Scanner类来获取输入。现在,我得到的是,只要按Enter键,应用程序就等待输入,而无需输入任何内容。 问题答案: 您可以进入等待进入的循环。如果用户按Enter键,请检查输入内容,如果没有提供输入,请继续循环。如果提供了输入,请中断循环。 如果您希望该机制是非锁定的,则需要一个单
问题内容: 如何检查列表是否为空?如果是这样,系统必须给出一条消息,指出 List为空 。如果不是,则系统必须给出一条消息,指出 List不为空 。用户可以输入数字以停止程序。这是我现在拥有的代码,但这不起作用,它总是显示“列表不为空”。 问题答案: 就像: 请注意,快速浏览该文档将为您提供该信息。
我想知道检查列表是否为空的最佳方法是什么。在我的Stream中,我调用两次。它有效,但我不知道它是否正确?它看起来有点难看: 当列表为空并且没有找到任何项目时,我必须抛出错误
MapStruct:在映射到目标之前检查源的null。如果源为空,则需要从mapstruct接口引发自定义异常。