Расширенный ввод с консоли Java

#java #brainfuck #esoteric-languages

#java #brainfuck #эзотерические языки

Вопрос:

В качестве самостоятельной практики я создаю интерпретатор BF на Java, который выполняет ввод-вывод через консоль. По большей части это нормально, однако, как вы, возможно, знаете, BF вводит по одному символу за раз, включая новые строки. Это означает, что, насколько я знаю, стандартные библиотеки консольного ввода не будут работать, потому что они принимают целые строки, а затем запрашивают возврат в конце. Я хочу , использовать следующее нажатие клавиши, которое вписывается в char без ее печати при вводе. Поэтому, когда BF запрашивает ввод, и вы вводите a , он принимает a , но не показывает его в консоли, если только программа BF не выведет a себя позже.

Как я могу это сделать?

Ответ №1:

Я предлагаю использовать JLine http://jline.sourceforge.net

У Terminal класса есть disableEcho() метод для выполнения того, что вы хотите.

Ответ №2:

Напишите свой собственный консольный вывод / ввод, используя текстовую область во фрейме и KeyListener

Комментарии:

1. Он пишет инструмент командной строки, компоненты Swing там не помогут.

Ответ №3:

Проверьте java.io.Console — вы можете прочитать строку без echo с readPassword() . Он по-прежнему ориентирован на строку, поэтому вы ничего не получите, пока пользователь не нажмет Enter. Другим возможным недостатком является то, что может отсутствовать консоль — зависит от способа запуска приложения.