Обновите уже напечатанное значение на терминале и прочтите его в java

Мне нужно создать простой интерфейс для оператора для проверки некоторых строк. Думаю, самый простой - сделать это в консоли.

Следующие шаги:

  • Строка выводится на консоль
  • Оператор это проверяет. Если строка в порядке, оператор нажимает enter, если есть ошибка, он обновляет уже напечатанную строку и нажимает enter. Важно, чтобы оператор не вводил строку снова, потому что она может быть длинной.
  • Оператор видит новую строку и т. д.

Можно ли реализовать это с помощью простой консоли на java? Я пытаюсь использовать потоки PipedOutputStream и PipedInputStream вот так

public static void main(String[] args) throws Exception{
    PipedOutputStream pipeOut = new PipedOutputStream();
    PipedInputStream pipeIn = new PipedInputStream(pipeOut);
    System.setIn(pipeIn);

    System.out.print("My string to verify");

    BufferedReader br = new BufferedReader(new InputStreamReader(pipeIn));
    String verified = br.readLine(); 
}

Есть две проблемы:

  • В терминале курсор нельзя переместить на уже напечатанную строку, чтобы отредактировать ее
  • даже если я нажимаю enter, курсор перемещается на следующую строку, кажется, что br.readLine(); не действует.
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
25
1

Ответы 1

Насколько я понимаю, это просто игра между строкой и вводом пользователя. В этом примере используется ввод для строки пользователя.

import java.io.*;
import java.text.*;
import java.util.*;

public class MyClass {
    private static final Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) throws Exception{
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
        String s = "My string to verify";
        System.out.println(s); 
        //Do what you need with s;
        //edit it
        String s2 = scanner.nextLine();

        bufferedWriter.write(s2);
        bufferedWriter.close();
        scanner.close();

    }
}

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

Vitalii 18.12.2018 23:16

Другие вопросы по теме