과 같이 작동 hasNext()
방법 :이 파일의 끝을 보는 경우
이
- , false를 반환;
- 유효하지 않은 공백이 아닌 다른 입력이 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.
- 위의 어느 쪽이든 true가 아닌 경우 사용자가 입력 할 다음 입력을 기다리고 입력 할 때까지 반환하지 않습니다. 당신이 파일을
Scanner
을 사용하는 경우 파일이 명확한 끝을 가지고 있기 때문에
일반적으로, 이러한 루프는 제대로 작동합니다, 그것은 일반적으로 더 입력을 기다리는 붙어하지 않습니다.
그러나 콘솔 입력 (System.in
, 리디렉션되지 않음)으로 작업하는 경우 일반적으로 사용자는 파일 끝 신호를 보내지 않습니다. 그는 단지 을 반환하고을 입력하면 hasNext()
이 앉고 사용자가 다음 줄에 더 많은 입력을 입력하는지 기다립니다.
이 처리하는 일반적인 방법에는 두 가지가 있습니다
사용자가 실제로 입력을 종료하는가. 당신이 돌아를 모든 번호를 입력하고 눌러 완료 한 후에는 일반적으로 Ctrl 키를D 또는 Ctrl 키를Z 인 파일 끝 시퀀스를 보내야합니다.
이렇게하면 해당 프로그램에 더 이상 입력 할 수 없습니다.
프로그램은 사용자에게 입력이 끝났음을 알리는 특정 값을 입력하라는 메시지를 표시합니다. 예를 들어, 문자열 "DONE". 당신이, 당신이 뭔가에 루프를 변경해야 그렇게 할 때 :
String nextInput;
while(sc.hasNext() && ! (nextInput = sc.next()).equals("DONE")){
System.out.println(nextInput);
}
당신은 긴급한 것을를 입력 한 후 입력? – FlyingPiMonster
예. 나는 sc.를 인쇄합니다.next()하지만 그 후에 멈추고 while 루프에서 인쇄를하지 못합니다. –
특정 "종료"코드 단어를 사용하지 않고이 루프에서 벗어나지 않습니다. 'System.in'은 항상 더 많은 입력을 요구하므로'sc.hasNext()'는 항상 true입니다. – Tom