2012-09-07 4 views
3

내 프로그램이 작동하지 않는 이유를 이해할 수 없습니다. 컴파일되지만 아무 것도 인쇄되지 않습니다. 파일에는 5 자의 단어가 있습니다. 그 파일에서 줄을 읽은 다음 문자 배열로 나눠서 출력해야합니다. 감사합니다!행을 읽고 문자 배열로 분할

import java.io.FileReader; 
import java.io.IOException; 
import java.io.BufferedReader; 

public class test { 
    public static void main(String[] args) 
    { 

     BufferedReader line = null; 
     char[] array = new char[7]; 

     try{ 

      line = new BufferedReader(new FileReader(args[0])); 

      String currentLine; 
      while((currentLine = line.readLine()) != null) 
      { 
       array = currentLine.toCharArray(); 
      } 

      for(int i = 0; i < array.length; i++) 
      { 
       System.out.print(array[i]); 
      } 

     }//try 

     catch(IOException exception) 
     { 
      System.err.println(exception); 
     }//catch 

     finally 
     { 
      try 
      { 
       if(line != null) 
        line.close(); 
      }//try 

      catch(IOException exception) 
      { 
       System.err.println("error!" + exception); 
      }//catch 

     }//finally 
    } // main 
} // test 
+0

어딘가에 브라켓이없는 것 같습니다. – arshajii

+0

이 코드는 설명 된 입력 파일이 주어질 때 잘 작동합니다. Reimeus의 대답이 당신을 위해 작동하지 않으면 입력 파일을 게시하십시오. –

+0

당면한 질문에 접선이지만,'array' 변수를 새로 할당 된 배열로 초기화 할 이유가 없습니다. 변수가 루프에 설정되면 그냥 버려집니다. – Alex

답변

3

while 루프는 마지막 행을 제외한 모든 행을 건너 뛰므로 마지막 행이 비어있을 수 있습니다.

while ((currentLine = line.readLine()) != null) { 
    array = currentLine.toCharArray(); 
    for (int i = 0; i < array.length; i++) { 
     System.out.print(array[i]); 
    } 
    System.out.println(); 
} 

을 또는 당신은 단지 한 라인이있는 경우, 당신은 간단하게 사용할 수 있습니다 : 모든 줄을 표시하려면, 당신은 할 수

String currentLine = line.readLine(); 
... 
+0

좋습니다. 고마워요! –

0

귀하의 프로그램 만 인쇄 마지막 줄을

를 인쇄해야 루프.

while (....!=null) 
{ 
array = currentLine.toCharArray(); 

for(int i = 0; i < array.length; i++) 
    { 
     System.out.print(array[i]); 
    } 


} 

위의 내용은 파일 사용 권한을 확인하는 것보다 문제가되지 않습니다.

파일 권한으로 인해 프로그램에서 파일을 읽을 수 없음을 확인하십시오.

+0

파일 권한이 문제가되면 예외가 발생하지 않습니까? –

+0

그것은 루프에 wasnt한다, didnt는 그것에 관해 생각한다. 감사! –