2013-11-01 3 views
0

У меня есть программа, которая должна читать строки ввода. Это должно быть много строк сразу. Например:Чтение строк ввода от пользователя с помощью SCANNER


Как Ввожу машину времени или может быть, нет, Интересно, существует ли свобода воли? Интересно, будет ли свободен существовать , может быть, нет , поскольку я вхожу в свою машину времени или.


Это все время вводится пользователем. Я пытался использовать метод .hasNextLine() из класса Scanner, но он не возвращает false .... он ждет ввода снова. Я искал решение, и кажется, что .hasNextLine() ждет ввода, но я не знаю, какую альтернативу использовать. Какие-либо предложения? Реальный код выглядит следующим образом:

while(input.hasNextLine()); 
     { 
      line += input.nextLine(); 
     } 

Спасибо за вашу помощь

+0

Почему бы просто не использовать 'hasNext()'? – Prateek

+0

@Prateek не эффективен –

+0

этот [пример] (http://stackoverflow.com/questions/17577908/java-why-is-this-code-not-working-infinite-loop/17580110#17580110) может помочь. –

ответ

2

Может быть, вы должны использовать какое-то последовательность «стоп», что означает, когда пользователь вводит определенную последовательность символов, она вспыхнет петлю. Это может выглядеть примерно так:

public static void main(String args[]){ 
    final String stopSequence = "/stop"; 
    final Scanner reader = new Scanner(System.in); 
    String input = reader.nextLine(); 
    while(!input.equalsIgnoreCase(stopSequence)){ 
     //process input 
     input = reader.nextLine(); 
    } 
} 
+1

input = reader.nextLine(); продолжает просить ввода. Он проходит весь путь, но затем он останавливается и ждет ввода без выхода из цикла Loop. – Curly5115

+0

@NickCarfagno Он вырывает петлю из-за часового. Я не понимаю, что вы пытаетесь сказать. –

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