2017-12-09 3 views
-1

파일에서 일부 데이터를 읽고 각 줄을 String 배열의 한 셀에 할당합니다. 어떤 이유로 (8-10 행) 파일을 읽은 후 배열을 인쇄하려고 할 때 아무 것도 인쇄되지 않습니다. While 루프 (라인 5)에서 라인을 프린트 할 때 라인이 올바르게 출력됩니다.Java : 문자열이 인쇄되지 않습니다.

1: int count = 0; 
    2: String[] s = new String[300]; 


    3: while(!StdIn.isEmpty()) { 
    4: s[count]=StdIn.readLine(); 
    5: System.out.println(s[count]); 
    6: count++; 
    7: } 

    8: for(int i=0;i<count;i++) { 
    9: System.out.println(s[i]); 
    10: } 

같은 코드를 사용하여 스캐너 :

Scanner in = new Scanner(System.in); 

    int count = 0; 
    String[] s = new String[300]; 


    while(in.hasNextLine()) { 
     s[count]=in.nextLine(); 
     System.out.println(s[count]); 
     count++; 
    } 
    for(int i=0;i<count;i++) { 
     System.out.println(s[i]); 
    } 

내 코드 뭐가 잘못 됐는지 알아낼 수 없습니다.

미리 감사드립니다.

편집 : 마지막 줄을 읽었을 때 in.hasNextLine()이 아무것도 반환하지 않습니다. 그것은 카운트 ++에서 붙어있어. 참조 사진 -> 여기 DEBUGGER

+1

나는 틀린 것은 없지만'StdIn'이 무엇인지 알지 못하면 전체 그림을 볼 수 없습니다. ** 디버깅 **을 시도 했습니까? [디버거 란 무엇이며 문제를 진단하는 데 어떻게 도움이 될 수 있습니까?] (https://stackoverflow.com/q/25385173/5221149) – Andreas

+0

@Andreas가 도움이된다면 스캐너를 사용하여 동일한 코드를 내 질문에 추가했습니다. –

+0

정확한 출력을 원하는대로 정확히 포함시킬 수 있습니까? – Keara

답변

-2
8: for(int i=0;i<count;i++) { 

당신의 오류, 이것은이 단지 파일로 작업합니다 대신 수

+0

count는's.length()'와 똑같이 저장 될 것입니다. –

+0

300 개의 인덱스가 모두 사용되지 않을 수도 있기 때문에 카운트를 사용했습니다. –

+0

그래, 맞습니다. 그러나 후안 파블로 (Juan Pablo)가 제안한 것은 예외가 될 수도 있습니다. –

-1

의 s.length해야하지만, 여기에 in.hasNextLine()를 System.in를 사용할 때 결코 거짓주지 않는다 . while 루프를 깨는 조건을 제공해야합니다.

+0

Ctrl + Z는 입력을 끝내고 hasNextLine()이 false를 반환합니다. – Andreas