【问题标题】:How do I read formatted input in Java?如何在 Java 中读取格式化输入?
【发布时间】:2010-11-27 17:14:32
【问题描述】:

假设我的输入文件包含:

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 中从这个 文件 中读取整数?

【问题讨论】:

  • 仅供参考:DataInputStream 用于读取二进制文件,而不是文本。
  • 那么,Java 解决方案是比 C++ 更容易还是更难?
  • 对我来说,在 C 中读取输入仍然更容易,特别是在文件包含各种数据的情况下 - 数字、字符串、浮点数等。

标签: java input io


【解决方案1】:

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

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

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

输出:

3
4
5
6

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

Scanner class as a constructorInputStream 作为字符流的源,因此可以使用FileInputStream 打开文本源。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多