2011-11-09 1 views
0

나는 전에 link에 게시 된 것과 같은 문제가 있습니다. 이유는 없지만 이번에는 Eclipse를 사용하여 다시 시도했지만 (링크에서 Netbeans를 사용함). 나는이 결과를 엄격하게 잘못 알고있다. UVAToolkit에서 오도 된 공백은 잘못된 대답을 반환 할 수 있습니다.종료되지 않는 Java 프로그램 2

만약 우연히 BufferedReader를 사용해야합니까?

BufferedReader reader = new BufferedReader(InputStreamReader(System.in)); 

코드 [참고 : 메인 (문자열 []에 args)에 위치한 방법]

Scanner scanner = new Scanner(System.in); 
String line; 
while(!(line = scanner.nextLine()).equals("")) { 
    System.out.println(line); 
} 
System.out.println("done"); 

케이스 입력 :

[ "1000"문자열의 마지막에 공백]
1 10 
1 100 
1 1000 

케이스 출력 [참고 : "새 줄"를 입력 흰색 공간에 관한]

1 10 
1 100 
"new-line" 
1 1000 
"new-line" 
done 
"new-line" 

올바른 케이스 출력 [참고 : "완료"문자열의 끝 없음 공백] 미리

1 10 
1 100 
1 1000 
done 

감사합니다.

+1

가능한 [비 종결 Java 프로그램] (http://stackoverflow.com/questions/8062749/non-terminating-java-program) - 처음으로 가난한 답변을 수락했습니다. 다른 대답은 정확합니다. –

+0

* System.out.println (line); *는 모든 * 줄을 "new-line"으로 끝냅니다. – JimmyB

+0

BrianRoach, 대답은 올바른 것입니까? 나는 그들 중 대부분을 시도했지만 아직 모든 출력물이 5 분 동안 만 편집 될 수 있습니다. –

답변

0

다음 코드는 빈 문자열이 아닌 경우 input의 결과 문자열을 표시하고 완료되면 "done"을 표시합니다.

나는를 발견하는 것은 매우 어렵다고 생각 [ "1000"문자열의 마지막에 공백] :

케이스 입력 : 아래의 기대에 관한

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class ReadConsoleScanner { 
    public static void main(String[] args) { 
     boolean stop = false; 
     BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in)); 
     String sWhatever = ""; 
     try { 
      while(!(stop = (sWhatever = bufferRead.readLine()).matches(""))){ 
       if (!stop) System.out.println(sWhatever); 
      } 
      System.out.println("done"); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 
} 

마지막 입력이 "1 1000"이 될 것으로 예상되지 않는 한 루프의 센티널로 필요한 공백 (빈 문자열)을 피할 수 있습니다.

while(!(stop = (sWhatever = bufferRead.readLine()).contains("1 1000"))){ 
    //whatever 
} 
+0

콘솔에서 FileReader를 통해 파일로 입력을 변경하면 이상한 결과가 출력됩니다. 공백을 피하기가 어렵다는 것에 동의합니다. –

관련 문제