我正在尝试编写一个计算乘法图对角线部分(基本上从数组的第12行第1列到第1行第12列)中所有数字之和的程序。问题是,在代码中,行计数器在每次循环后都拒绝减少,而计数器却恰好增加了。我在做什么错?
public Integer ComputeDiagonalSum(int multiplier)
{
Integer [][] MultiArray = new Integer[multiplier][multiplier];
int RowCounter = MultiArray.length - 1;
int ColCounter = 0;
Integer DiagonalSum = 0;
while(RowCounter > 0)
{
int RowNumber = RowCounter + 1;
//
//Compute inner loop
while(ColCounter < MultiArray[multiplier - 1].length)
{
int ColNumber = ColCounter + 1;
//Load each box in the current column of the current row
MultiArray[RowCounter][ColCounter] = RowNumber * ColNumber;
DiagonalSum += MultiArray[RowCounter][ColCounter];
ColCounter++;
}
//doesn't work
RowCounter--;
}
return DiagonalSum;
}
问题不是您的RowCounter不会减少,而是您需要在开始的第一个循环内移动ColCounter的初始化。 while(ColCounter < MultiArray[multiplier - 1].length)
的求值在第一次迭代后将始终返回false,因为ColCounter已经增加。
实际上,如果需要对角线总和,则行/列只需要一个变量,循环只需要一个,因此行号应与列号相同。