当每行的所有rowSum
值均为正数时,以下代码可以正常工作,但如果所有rowSum
的值均为负数(检查负数> 0并每次均失败),则以下代码将失败,并将答案设置为0。请提出一些处理建议这种负数的情况。 maxSum
应该用什么初始化?
public static void findMaxRow(double[][] a){
double maxSum = 0;
int maxRow = 0;
for (int row = 0; row < a.length; row++){
double rowSum = 0;
for (int column = 0; column < a[row].length; column++){
rowSum += a[row][column];
}
if (rowSum > maxSum){
maxSum = rowSum;
maxRow = row;
}
}}}
最佳答案
您的初始值
double maxSum = 0;
如果实际最大值为负,则导致
maxSum
保持为0。将初始值更改为
Double.NEGATIVE_INFINITY
:double maxSum = Double.NEGATIVE_INFINITY;