TL; DR--如何获取java.util.NoSuchElementException以返回null而不是错误并使程序崩溃。
我正在编写一个应该从文本文件中读取一系列int的程序。在程序中,每次运行时,int的数量都会有所不同。我已经编写了一段代码来读取整数,我想知道如何使java.util.NoSuchElementException不会崩溃我的程序而是返回null。 我写的代码如下
public static void main(String[] args) throws IOException{
Scanner Input = new Scanner(new File("newestcode.txt"));
Integer[] digits = new Integer[100];
int h = 0;
while(true){
digits[h] = Input.nextInt();
h++;
System.out.println(digits[h]);
}
}
如果你好奇,我要编写的程序是我前几天写的一个糟糕的加密引擎的解密引擎
答案 0 :(得分:0)
try {
digits[h] = Input.nextInt();
h++;
System.out.println(digits[h]);
}catch (NoSuchElementException e){
break;
}
答案 1 :(得分:0)
首先,如果您不确定文件中的内容数量,请不要尝试将它们存储到固定大小的数组中。改为使用ArrayList。
也不要使用无限循环while(true)
,但可以考虑使用Input.hasNext()
检查是否还有从文件中读取的内容。
还有一个。您在增量后尝试打印值。这意味着您在0位置添加元素但尝试从1位置读取它。在循环结束时增加。
Scanner Input = new Scanner(new File("newestcode.txt"));
List<Integer> digits = new ArrayList<>();
int h = 0;
while(Input.hasNetxt()){
digits.add(h, Input.nextInt());
System.out.println(digits.get(h));
h++;
}
答案 2 :(得分:0)
您应该使用input.hasNext()方法来检查输入是否还有其他内容&#39; int&#39;在使用它之前。 为了支持任何长度的int元素,您不能将数组设置为固定长度100,您需要使用ArrayList动态添加元素。
Scanner input = new Scanner(new File("./newestcode.txt"));
List<Integer> digits = new ArrayList<>();
int h = 0;
while (input.hasNext()) {
digits.add(h, input.nextInt());
System.out.println(digits.get(h));
h++;
}
注意:您需要在增加h之前打印数字[h]。