如何使用Stream读取由newLine分隔的Integer?

时间:2019-04-01 14:15:26

标签: java stream

我想使用Stream读取由newLines分隔的多个Integer。我当然知道如何使用扫描仪来做到这一点,但是我尝试找出流。 我的输入将是许多整数,第一个整数n将决定要跟随的行数。

  

5
  1
  2
  3
  4
  5

我对InputStreamReader的用途感到困惑。 我可以使用它来读取用户的输入吗?它确实具有读取的方法及其重载版本。我以为我可以使用重载方法将值保存到数组中,然后对其求和,求出平均值,等等。但这

try(InputStreamReader isr = new InputStreamReader(System.in)){
        int n = isr.read();
        int count =0;
        isr.read(char[] cbuf, 0, n);

    }

不起作用。您可能会发现,我是流媒体的新手。通常,我会与正在阅读的书(Ivor Horton“ Beginning Java”)相处融洽,这是其他人在这里问过的Java文档和资料,但这次不是。我一直找不到合适的教程或任何东西,可能是因为我不知道我的确切问题是什么。 我会很感激,但也提供有用的链接或文献。 路易斯

2 个答案:

答案 0 :(得分:2)

您可以使用BufferedReader,它为您提供类似于readLine()的{​​{1}}方法:

Scanner.nextLine()

答案 1 :(得分:0)

方法Files.readAllLines从文件中读取数据,并返回一个字符串列表,每行一个,可以轻松地将其转换为实际的Stream。要从文件中读取所有数字并进行打印,代码可以很简单:

Files.readAllLines(Paths.get("data.txt")).stream().forEach(System.out::println);

请注意,此方法声明抛出IOException,该陷阱必须被捕获或声明。如果数字的打印顺序很重要,则可以使用方法forEachOrdered