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”里是什么?