Int值不从文件读入

时间:2016-03-26 04:00:36

标签: java arraylist java.util.scanner

所以我试图从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

1 个答案:

答案 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]$