如何在Java中读取格式化输入?

5
假设我的输入文件包含:
3 4 5 6    7        8
9


10

我想运行一个while循环并读取整数,这样在每次循环迭代后,我将分别得到3、4、5、6、7、8和10。

在C/C++中,这非常简单,但在Java中却不是...

我尝试了这段代码:

try {
            DataInputStream out2 = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));

            int i=out2.read();
            while(i!=-1){
                System.out.println(i);
                i=out2.readInt();
            }

    } catch (IOException ex) {

    }

我得到的是:

51
540287029
540418080
538982176
151599117
171511050
218762506
825232650

我该如何在Java中从这个文件中读取整数?


1
FYI:DataInputStream 用于读取二进制数据,而非文本。 - Laurence Gonsalves
那么,Java解决方案比C++更容易还是更难? - Bill K
对我来说,用 C 语言读取输入仍然更容易,尤其是当文件包含各种数据类型时 - 数字、字符串、浮点数等等。 - Lazer
1个回答

15

可以使用Scanner类及其nextInt方法:

Scanner s = new Scanner("3  4        5   6");

while (s.hasNext()) {
  System.out.println(s.nextInt());
}

输出:

3
4
5
6

默认情况下,Scanner 对象将忽略任何空格并获取下一个标记。

Scanner类有一个构造函数,它以InputStream作为字符流的来源,因此可以使用打开文本源的FileInputStream

将上面示例中的 Scanner 实例化替换为以下内容:

Scanner s = new Scanner(new FileInputStream(new File(filePath)));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接