如何避免一个“错误”;java.util.NoSuchElementException“;破坏我的程序
TL;DR——如何让java.util.NoSuchElementException返回null而不是错误并使程序崩溃 我在写一个程序,应该从文本文件中读取一系列整数。在程序中,每次运行时INT的数量都会有所不同。我已经编写了一段读取ints的代码,我想知道如何使java.util.NoSuchElementException不会使我的程序崩溃,而是返回空值。如何避免一个“错误”;java.util.NoSuchElementException“;破坏我的程序,java,nosuchelementexception,Java,Nosuchelementexception,TL;DR——如何让java.util.NoSuchElementException返回null而不是错误并使程序崩溃 我在写一个程序,应该从文本文件中读取一系列整数。在程序中,每次运行时INT的数量都会有所不同。我已经编写了一段读取ints的代码,我想知道如何使java.util.NoSuchElementException不会使我的程序崩溃,而是返回空值。 我写的代码如下 public static void main(String[] args) throws IOExcepti
我写的代码如下
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]);
}
}
如果您好奇,我将要编写的程序是一种解密引擎,用于前几天我编写的一个糟糕的加密引擎。首先,如果您不确定文件中的整数数量,请不要尝试将它们存储到固定大小的数组中。改用ArrayList
try {
digits[h] = Input.nextInt();
h++;
System.out.println(digits[h]);
}catch (NoSuchElementException e){
break;
}
也不要使用无休止循环<代码>(true)但请考虑使用<代码>输入.HasNeXT()/Cux>检查文件是否还有读取的内容。
还有一个。您正在尝试打印增量后的值。这意味着您正在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++;
}
Scanner Input=新扫描仪(新文件(“newestcode.txt”);
列表位数=新的ArrayList();
int h=0;
while(Input.hasNetxt()){
digits.add(h,Input.nextInt());
System.out.println(digits.get(h));
h++;
}
在使用输入之前,应该使用input.hasNext()方法检查输入是否还有任何“int”。
为了支持任意长度的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++;
}
Scanner input=新扫描仪(新文件(“./newestcode.txt”);
列表位数=新的ArrayList();
int h=0;
while(input.hasNext()){
digits.add(h,input.nextInt());
System.out.println(digits.get(h));
h++;
}
注意:在增加h之前,您需要打印数字[h]。您听说过try catch吗?请遵循字段的命名约定,使用camelCase。因为您的字段
Input
可能看起来像一个类,使用静态方法。如果您需要解释它是如何工作的,只需问:)轻微的输入错误,它是Input.hasNext()
而不是Input.hasNetxt()