2014-12-12 2 views
-1

안녕 얘들 아, 미안하지만 나는 이것에 새롭지만 파일과 글을 읽고 거기에있는 데이터의 평균을 찾기 위해 배열에 넣으려고하고있다. 이것은 나의 것이다. 코드하지만 "String [] row = file.readLine(). split (" ");"에서 NullException이 발생할 때마다 "java.lang.NullPointerException : Java 초보자

int nRows =652; 
int nCols =7; 

double data [][] = new double[nRows][nCols]; 
char map [][] = new char[nRows][nCols]; 

for (int i=1; i < nRows ; i++) { 

    String[] row = file.readLine().split(" "); 
    // below here ...... 
    for (int j=1; j < nCols-1 ; j++) { 
     data[i][j] = Double.parseDouble(row[j]); 
     //put if no more data then stop.   
    } 
} 

file.close(); 

for (int i =0; i < nRows; i++) { 
    for (int j=0; j< nCols; j++) { 
     map[i][j] = '0'; 

    } 
} 

for (int i =1; i < (nRows -1); i++) { 
    for (int j=1; j < (nCols -1); j++) { 

     double sum = data [i-1] [j] + data [i] [j-1] + data [i][j+1] + data [i+1][j]; 
     double average = sum /4; 
     System.out.println(average); 
    } 
} 

for (int i=0; i <nRows; i++) { 
    for (int j=0; j <nCols; j++) { 
     System.out.print(map [i][j] + ""); 
    } 



for (int h = 1; h < (nRows -1); h++) { 
    for (int l =1; (l <nCols -1); l++) { 

      double sum = data [h-1] [h] + data [i] [h-1] + data [i] [h+1] + data [i+1] [h]; 
     // this is average. 
     double average = sum /4; 
     System.out.println(average); 

    } 
} 
} 

for (int i=0; i <nRows; i++) { 
for (int j=0; j <nCols; j++) { 
    System.out.print(map [i][j] + " "); 
} 
System.out.println(); 
} 
} 
} 
+1

: 리턴 null가 아닌 경우

당신은 항상 확인하실 수 있습니다 그것의 ounds. – jbutler483

+1

'file' 객체는 어디에 생성 되었습니까? –

답변

2

아마도 652 라인 미만입니다. file.readLine()은 읽을 행이 더 이상 없을 때 null을 리턴합니다.

0

디버거를 사용하고 'file'변수를 확인하십시오. 변수가 null이고 null 변수에서 함수를 호출하려고하면 NullPointerException이 발생합니다.

0

file.readLine()가 null의 있도록, 파일의 종료 후

file.readLine().split() 

를 호출하고 가능성이 높습니다.

당신은 널 체크 라인 포장 할 수

- 다음과 같은 :

String[] row; 
String[] rawRow = file.readLine(); 
if (rawRow != null) { 
    row = rawRow.split(" "); 
} else { 
    break; 
} 
0

제대로 file, 파일의 끝에 도달하면 null을 반환 readline() 방법을 만든 가정 할 때, 참조 문서 HERE을 당신은의에 의해 빈 줄을 읽기 위해 노력하고

for (int i=1; i < nRows ; i++) { 

     String line = file.readLine(); 
     if(line!=null){ 
     String[] row = file.readLine().split(" "); 
     // below here ...... 
     for (int j=1; j < nCols-1 ; j++) { 
      data[i][j] = Double.parseDouble(row[j]); 
      //put if no more data then stop. 
     } 
     } 
    ... 
    } 
관련 문제