2017-01-18 4 views
0

Я хочу прочитать userinput из командной строки для конкретной записи в журнале. Мой метод для чтения строки:Строка чтения Java с квадратными скобками

public static String readString(String message) 
{ 
    System.out.print(message); 
    Scanner scan = new Scanner(System.in); 
    String response = null; 

    while (response == null || response.equals("") || response.length() <= 4) 
    { 
     if(response != null) 
     { 
     System.out.println("Type atleast 5 chars"); 
     System.out.println(message); 
     } 
     response = scan.next(); 
    } 
    return response; 
} 

Так до тех пор, как я печатаю только нормальные литералов, все работает отлично. Но печатая что-то вроде:

"[срубы 123] образец текста"

возвращается в расщеплении ответ.

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

+0

Какова цель передачи сообщения в методе readString? – Ankit

ответ

3

Сканер. next:

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

и

Сканер разбивает свой вклад в лексемы с использованием шаблона разделитель, который по умолчанию соответствует пробельные.

Таким образом, ввод [log-123] sample text будет разбит на просторах. Это не имеет никакого отношения к скобкам.

Это может быть более, что вы хотите:

сканера. nextLine:

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

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