Java 弗洛伊德';s算法:数组空指针异常

Java 弗洛伊德';s算法:数组空指针异常,java,pointers,null,integer,Java,Pointers,Null,Integer,我一直得到一个空指针异常。然而,我找不到原因。有人能帮忙吗 编辑:我使用一个整数[][]数组将空值表示为“无限”符号,正如弗洛伊德的算法在纸上所表示的那样 private static Integer[][] floyd( Integer[][] a ) { int n = a.length; for( int k = 0; k < n; k++ ) { System.out.println( "D(" + (k+1) + ") =" );

我一直得到一个空指针异常。然而,我找不到原因。有人能帮忙吗

编辑:我使用一个整数[][]数组将空值表示为“无限”符号,正如弗洛伊德的算法在纸上所表示的那样

private static Integer[][] floyd( Integer[][] a ) {
    int n = a.length;

    for( int k = 0; k < n; k++ ) {
        System.out.println( "D(" + (k+1) + ") =" );

        for( int i = 0; i < n; i++ ) {              
            for( int j = 0; j < n; j++ ) {
                // The below line throws a null pointer exception and I don't know why
                a[i][j] = Math.min( a[i][j],  a[i][k] + a[k][j] );
            }
        }

        print2DArray( a );
    }

    return a;
}
私有静态整数[][]floyd(整数[][]a){
int n=a.长度;
对于(int k=0;k
根据输入数组中的内容,您可能会自动取消绑定null,这会导致null指针异常。如果将数组声明为
int[][]
而不是
Integer[][][]
,则不会得到此结果。

问题在于调用
floyd(a)
。a的一个元素为null。我不明白你为什么这么问。如果您理解空指针是什么,我不明白为什么这不明显。还是你忘了我们不知道“a”里是什么?