2017-01-21 12 views
1

Я понимаю, что hasNext() используется, чтобы проверить, будет ли следующий вход, но моя hasNext запрашивает ввод по какой-либо причине. Это мой код:Почему мой сканер hasNext («строка») запрашивает метод ввода?

Scanner sc = new Scanner(System.in); 

while (!sc.hasNext("quit")) { 
    System.out.println("Type anything other than quit to keep inputting. "); 
    sc.nextLine(); 
} 

Что моя программа делает сразу же это делает меня что-то типа (перед запросом к типу), а затем запрос на «ничего другого, кроме выхода типа» всплывает и программа работает правильно. Однако я не хочу, чтобы первый пустой ввод. Почему это всплывает и как я могу это исправить?

ответ

0

Scanner-API говорит

Следующая() и hasNext() методы и их примитивным типа компаньон методы (такие как nextInt() и hasNextInt()) первого пропустить любой входной сигнал, который соответствует шаблону разделитель , а затем попытайтесь вернуть следующий токен . Оба hasNext и следующие методы могут блокировать ожидание ввода . Независимо от того, блокирует ли блок hasNext метод, не будет ли заблокирован его связанный следующий метод: .

Таким образом, вы войдете в свое тело, когда будет введена одна строка.

Написать что-то вроде

String next = ""; 
while (!next.equals("quit")) { 
    System.out.println("Type anything other than quit to keep inputting. "); 
    next = sc.nextLine(); 
} 

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

  • Нет связанных вопросов^_^