0

我不断收到空指针异常。然而,原因让我无法理解。有人可以帮忙吗?

编辑:我使用 Integer[][] 数组将空值表示为“无穷大”符号,因为弗洛伊德算法在纸上表示

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;
}
4

1 回答 1

1

根据输入数组中的内容,您可能会自动拆箱空值,这会导致空指针异常。如果您将数组声明为 anint[][]而不是 an Integer[][],您将不会得到这个。

于 2013-10-29T20:40:12.687 回答