2017-11-22 1 views
0

프로그래밍 퍼즐의 입력에 약간의 문제가 있습니다. 입력을 그래프로 변환하려면 입력이 공백으로 구분 된 2 개의 정수를 갖는 각각의 행의 미지의 양으로 표시됩니다 (이것은 가장자리를 나타냅니다). 나는 수색을했고 실제로 답을 찾지 못했고 여러 줄에서 입력을받는 법을 알았지 만 모든 입력을 파싱 한 후에 어떻게 멈출 수 있습니까?자바 : 한 번에 여러 줄 입력 받기

은 여기의 의미는 다음과 같습니다

Scanner stdin = new Scanner(System.in); 
while (stdin.hasNext()) { 
     node1 = stdin.nextInt(); 
     node2 = stdin.nextInt(); 
     //save edge from node1 to node2 
} 
//do xyz 

문제는 여기에 XYZ에 도달되지 않습니다하고 입력을 기다리는 유지한다는 것이다. 예 입력은 다음과 같습니다

0 1 
0 3 
2 1 
+0

항상 3 줄에서 읽어야합니까? 더있을 수 있을까요? 마지막 입력 내용을 어떻게 알 수 있습니까? – clinomaniac

+0

사용자가 입력을 끝내기 위해 전달 된 빈 문자열과 같은 기호가 필요합니다. 또한 원하는 입력을 받고 있는지 확인하지 않아도됩니다. – dave

답변

0

나는 질문을 게시 그 이유는 그래서, 하나의 코드를 테스트 할 때 수동으로 (Windows에서 우분투/Ctrl + Z에서 Ctrl + D)는 EOF 기호를 보내야 몰랐어요.

파일에서 실제로 입력을 읽을 때 hasNext()는 끝에 도달하면 false를 반환하므로 테스트 문제 일뿐입니다.

그래서 바로 가기를 사용하여 콘솔에서 EOF 기호를 보내면 hasNext()가 false를 반환합니다.

0

보다는 데이터가 스캐너에서이 오는 동안 반복 왜 안 루프까지 같은 빈 행으로 그들이 특수 문자 순서로 입력을 추가 완료 사용자 신호?

Scanner stdin = new Scanner(System.in); 
String inputLine = null; 
do { 
    try { 
     inputLine = stdin.nextLine(); 
     // process the inputLine here! 
    } catch (Exception e) { 
     break; 
    } 
} while (inputLine != null && !("".equals(inputLine.trim()))); 
관련 문제