2016-11-28 1 views
0

사용자가 무언가를 입력 할 때만 while 루프를 인터럽트 할 수 있어야합니다. 그렇지 않으면 루프가 계속됩니다.사용자가 무언가를 입력하면 while 루프를 인터럽트하는 방법

그러나 이것은 시도하기 전에 무언가가 입력 될 때까지 루프가 대기하게합니다.

무언가가 입력 될 때까지 루프를 계속 유지하려면 어떻게해야합니까?

while (true) { 
    if (scanner.nextLine()) { 
    // statements 
    } 

    // standard loop statements 
} 
+9

흠, 하나는'루프에서 break' 얼마나 ... – janos

+0

은 아마 단지'변경하면서 (사실)''에 잠시 (! scanner.hasNext())'. – Gendarme

+1

_hasNext() _이 (가) 차단 중입니다. 일반적으로 입출력 차단은 원하는 것이 아닙니다. 대신 파일의 존재를 확인하는 것은 어떻습니까? –

답변

1

사용자가 단일 문자를 입력 할 때 루프를 종료하려면 KeyEvent를 청취해야 할 수 있습니다. 그러나 사용자가 0 자 이상의 행을 입력하고 Enter 키를 누를 때까지 기다릴 수 있으면 BufferedReader의 ready 메소드를 사용할 수 있습니다.

InputStreamReader inputStream = new InputStreamReader(System.in); 
BufferedReader bufferedReader = new BufferedReader(inputStream); 
while(true) 
{ 
    if (bufferedReader.ready()) 
    { 
     String s = bufferedReader.readLine(); 
     // do stuff before exiting loop 
     break; 
    } 
    // do stuff in loop 
} 
+0

이것은 내 문제의 정답이지만, 나는 잘못 말 하였다. 대신 스레드를 사용하여 끝났다. –

관련 문제