Java Stream копирует только первую строку при вставке ввода - PullRequest
1 голос
/ 08 мая 2020

Со следующим кодом:

Scanner s = new Scanner(System.in);
        ArrayList<String> result = new ArrayList<String>();
        while(s.hasNext())
            result.add(s.next());
        s.close();
        return result;

Если мой ввод вводится вручную на консоли следующим образом:

123
456
789

При вводе все в порядке.

Но если я скопирую и вставлю ввод в консоль CMD, вывод будет:

789

Ака, только первая строка.

Использование: CMD, JDK 14, Windows 10

Полный код:

import java.util.ArrayList;
import java.util.Scanner;

public class Client {
    private static ArrayList<String> readLines() {
        Scanner s = new Scanner(System.in);
        ArrayList<String> result = new ArrayList<String>();
        while(s.hasNext())
            result.add(s.next());
        s.close();
        return result;
    }

    private static int[] convertLine(String line) {
        char[] digits = line.toCharArray();
        int[] result = new int[digits.length];
        int n = 0;
        for (char a : digits)
            result[n++] += a-48;
        return result;
    }

    private static int[][] convertLines(ArrayList<String> a) {
        int[][] result = new int[a.size()][];
        int n = 0;
        for (String line : a)
            result[n++] = convertLine(line);
        return result;
    }

    @SuppressWarnings({"resource"})
    static public void main(String[] args) {
        int[][] cells = convertLines(readLines());
        for (int i = 0; i < cells.length; i++) {
            for (int j = 0; j < cells[i].length; j++)
                System.out.print(cells[i][j]);
        System.out.print("\n");
        }
    }
}

Что я делаю не так?

1 Ответ

1 голос
/ 08 мая 2020

Примечание. Это не ответ, но отправлено как ответ для отображения форматированного вывода.

Невозможно воспроизвести.

Когда я делаю одну копию / вставку трех чисел прямо из текста вопроса в командную строку, я получаю:

C:\path\to\my\classes>java Client
123
456
789
^Z
123
456
789

Мне, конечно, пришлось нажать Enter, Ctrl-Z, Enter, чтобы завершить ввод.

...