2016-04-23 3 views
0

Я запускаю консольное приложение в Netbeans, которое запрашивает ввод пользователя, проверяет ввод и выводит сообщение об ошибке, если вход не прошел проверку и повторные запросы. Сообщение об ошибке, которое я установил для печати в красном тексте за this answer. Он отлично работает, за исключением одной проблемы.Настройка цвета текста ввода пользователя после печати сообщения ANSI?

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

Например, пользователь ввел недопустимый ввод. Они снова вводят свой ввод после сообщения об ошибке. Он должен печатать в цветном тексте по умолчанию (черный в моей версии), но вместо этого он печатается как красный текст.

Есть ли способ, в котором я должен закрыть применение цветового кода ANSI на мой текст? Конец тега?

Код:

public static void main(String[] args) 
{ 

    //Initialize keyboard input 
    Scanner keyboard = new Scanner(System.in); 

    //Print prompt to screen 
    System.out.println("User input prompt goes here: "); 

    //Store user input 
    String inputGot = keyboard.nextLine(); 

    //Print a dummy error message 
    System.out.println("\u001B[31m" + "This is an error of some sort. " 
      + "Please re-enter input: "); 

    //Rerun input prompt (this would be looped in the real program) 
    System.out.println("User input prompt goes here: "); 

    //Store user input 
    inputGot = keyboard.nextLine(); 
} 

ответ

1

Везде, где вы хотите красный текст, чтобы остановить, вам нужно вставить управляющую последовательность ANSI, чтобы установить все ANSI атрибуты от: "\u001b[0m".

Посмотрите на другие вопросы, которые могут вам понадобиться. https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_codes

+0

Это исправлено. Очень признателен! –

Смежные вопросы