【问题标题】:How can I read Integers separated by newLine using Stream?如何使用 Stream 读取由 newLine 分隔的整数?
【发布时间】:2023-03-11 19:40:02
【问题描述】:

我想使用 Stream 读取由 newLines 分隔的多个整数。我绝对知道如何使用 Scanner 来做到这一点,但我试图弄清楚 Streams。 我的输入将是一些整数,第一个整数 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 文档和其他人在这里问过的东西,但这次不是。我一直找不到合适的教程或任何东西,可能是因为我不知道我的确切问题是什么。 我会很感激任何解释,但也有有用的链接或文献。 路易斯

【问题讨论】:

  • 改用Scanner 怎么样?
  • 每次调用isr.read() 只给您一个字母,其中数字是所输入字符的ASCII 或Unicode。简而言之,这是一个非常低级的接口,除非出于兴趣,否则可能不值得使用。

标签: java stream


【解决方案1】:

您可以使用BufferedReader,它为您提供类似于Scanner.nextLine()readLine() 方法:

public static void main(String[] args) throws Exception {
    try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
        int n = Integer.parseInt(reader.readLine());
        System.out.println(n);
        while (n-- > 0) {
            int i = Integer.parseInt(reader.readLine());
            System.out.println(i);
        }
    }
}

【讨论】:

  • 谢谢。 2 个问题: 1. readLine() 将返回一个字符串。要使用 Stream 对数字进行进一步计算,返回 Stream 不是更好吗? 2. Buffered reader 只是将 InputStreamReader 的 characterStream 改成 text 吗?所以它只是让一切变得更容易处理?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
  • 2018-06-01
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
相关资源
最近更新 更多