2016-04-01 12 views
-5
import java.util.Scanner; 
class TestMatrix 
{ 
    public static void main(String args[]){ 
     Scanner in=new Scanner(System.in); 
     System.out.println("Enter the number of matrices: "); 
     int num=in.nextInt(); 
     int[][] temp=new int[10][10]; 
     Matrix[] matrixarray=new Matrix[num]; 
     Matrix.numberOfMatrices(num); 
     for(int i=0;i<num;i++) 
      { 
       System.out.println("Enter the rows and columns of M["+(i+1)+"]: "); 
       int r=in.nextInt(); 
       int c=in.nextInt(); 
       System.out.println("Enter the values: "); 
       for(int x=0;x<r;x++) 
        for(int y=0;y<c;y++) 
         { 
          temp[x][y]=in.nextInt(); 
         } 
      matrixarray[i].inputMatrixValues(temp);  
     } 
     } 
} 
public class Matrix 
{ 
    static int number; 
    int[][] matrix=new int[10][10]; 
    int row,col; 
    public static void numberOfMatrices(int n) 
    {number=n;} 
    public void inputMatrixValues(int[][] matrix) 
    { 
     for(int i=0;i<row;i++) 
      for(int j=0;j<col;j++) 
      { 
       this.matrix[i][j]=matrix[i][j]; 
      } 
    } 
} 

上記のコードは、22行目のinputMatrixValues()メソッドを呼び出すときにnullポインタ例外を返します。matrixarray [i] .inputMatrixValues(temp);NullPointerExceptionオブジェクトの配列

matrixarrayは、Matrixクラスのオブジェクト配列です。オブジェクト配列のi番目の要素にアクセスする際に例外が発生します。 Matrixオブジェクト配列が9行目に作成されます。コードのどの部分がエラーを引き起こすかを確認します。

+0

'行列は[] matrixarray =新しい行列[NUM]引き起こし;これは、これが原因であるヌル が充填された長さNUMの配列を作成 ' をnull参照のみを含む配列の1つのインデックスにアクセスしているためです。 –

+0

@Xoce笑Пepeúpaあなたが正しいです、代わりにコメントとして投稿してください。 –

答えて

0

は、Matrix[] matrixarray=new Matrix[num];を初期化していないために発生しました。 {例えば} matrixarray[0]nullであり、あなたがmatrixarray[i].inputMatrixValues(temp);を呼び出すときにNullPointerException