所以我试图从txt文件中读取值并将它们添加到ArrayList中。我使用下面的代码,但在使用它之后,当我使用System.out.print(list)时,ArrayList仍然是空的。有没有容易发现的错误?
ArrayList<Integer> list = new ArrayList<>();
Scanner in = null;
try{
String fname = "p01-runs.txt";
in = new Scanner(new File(fname));
}catch (FileNotFoundException pExcept){
System.out.println("Sorry, the File you tried to open does not exist. Ending program.");
System.exit(-1);
}
while (in.hasNextInt())
{
int x = in.nextInt();
list.add(x);
}
编辑:输入文件只是一个带有整数值的txt文件,如下所示: 2 8 3
2 9
8
6
3 4 6 1 9
答案 0 :(得分:0)
对hashNextInt()
的致电可以返回false
,原因如下:
这可能是由于输入文件为空,或文件格式与您尝试阅读的方式不匹配所致。
在您的示例中,除了IOException
之外,还可能会抛出一些FileNotFoundException
。
更新 - 问题是您没有告诉/向我们展示的问题。考虑一下......使用您的代码和输入文件。
[stephen@blackbox tmp]$ cat Test.java
import java.util.*;
import java.io.*;
public class Test {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
Scanner in = null;
try{
String fname = "test.txt";
in = new Scanner(new File(fname));
}catch (FileNotFoundException pExcept){
System.out.println("Sorry, the File you tried to open does not exist. Ending program.");
System.exit(-1);
}
while (in.hasNextInt())
{
int x = in.nextInt();
list.add(x);
}
System.out.println("Read " + list.size() + " numbers");
}
}
[stephen@blackbox tmp]$ cat test.txt
2 8 3
2 9
8
6
3 4 6 1 9
[stephen@blackbox tmp]$ javac Test.java
[stephen@blackbox tmp]$ java Test
Read 12 numbers
[stephen@blackbox tmp]$