Использование стандартного / выходного потока в качестве строки ввода / вывода

1

У меня есть задание, в котором говорится, что "вы можете предположить, что вход будет поступать со стандартного ввода в потоке. Вы можете предположить, что маркеры имеют доступ ко всем стандартным библиотекам".

Как мне перейти на чтение нескольких строк/входов и сохранение всех входов в виде одной строки, а затем вывод этой строки из функции?

В настоящее время это моя функция, но она не работает должным образом, на одном этапе она не читала больше одной строки, и теперь она вообще не работает.

public static String readFromStandardIO() {

    String returnValue = "";

    String newLine = System.getProperty("line.separator");
    System.out.println("Reading Strings from console");

    // You use System.in to get the Strings entered in console by user
    try {
        // You need to create BufferedReader which has System.in to get user
        // input
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                System.in));
        String userInput;
        System.out.println("Enter text...\n");
        while (!(reader.readLine() == reader.readLine().trim())) {
            userInput = reader.readLine();
            returnValue += userInput;
        }

        System.out.println("You entered : " + returnValue);
        return returnValue;

    } catch (Exception e) {

    }
    return null;
}

Спасибо за помощь!

Теги:
io
standard-library

1 ответ

0
Лучший ответ

Проблема в том, что вы вызываете reader.readLine() три раза, так что в итоге вы сравните две совершенно разные строки и затем записываете еще одну.

Кроме того, он, как правило, не одобрял сравнение строк с использованием == (поскольку сравнение Objects with == спрашивает, являются ли они одним и тем же фактическим объектом (да, Java прощается в этом отношении со строками, но он все еще нахмурился)).

Вам нужно будет сделать что-то более сродни:

public static String readFromStandardIO() {

    String returnValue = "";

    System.out.println("Reading Strings from console");

    // You use System.in to get the Strings entered in console by user
    try {
        // You need to create BufferedReader which has System.in to get user
        // input
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String userInput;
        System.out.println("Enter text...\n");
        while (true) {
            userInput = reader.readLine();
            System.out.println("Finally got in here");
            System.out.println(userInput);
            returnValue += userInput;
            if (!userInput.equals(userInput.trim())) {
                break;
            }
        }

        System.out.println("You entered : " + returnValue);

    } catch (Exception e) {

    }
    return returnValue;

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню