While循环中减法运算符的问题

问题描述 投票:0回答:1

我正在尝试编写一个计算乘法图对角线部分(基本上从数组的第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;
}

链接到乘法图表的图像:https://www.google.com/search?client=ms-android-samsung-ga-rev1&sxsrf=ACYBGNQo4QAYAF-MjmvCR4jcbz3RqDx0eg%3A1581776894027&ei=_v9HXvKbAYilUoveveAE&q=multiplication+chart+&oq=multiplication+chart+&gs_l=mobile-gws-wiz-serp.3..35i39j0i22i30.1455.2670..3471...0.0..0.765.1392.5-1j1......0....1.0tdlwHvu690#imgrc=jtyeYkOxpQT3CM

java while-loop increment decrement
1个回答
0
投票

问题不是您的RowCounter不会减少,而是您需要在开始的第一个循环内移动ColCounter的初始化。 while(ColCounter < MultiArray[multiplier - 1].length)的求值在第一次迭代后将始终返回false,因为ColCounter已经增加。

实际上,如果需要对角线总和,则行/列只需要一个变量,循环只需要一个,因此行号应与列号相同。

© www.soinside.com 2019 - 2024. All rights reserved.