Проблема с оператором декремента в цикле while - PullRequest
0 голосов
/ 15 февраля 2020

Я пытаюсь написать программу, которая вычисляет сумму всех чисел в диагональном сечении диаграммы умножения (в основном от строки 12 столбца 1 массива до строки 1 столбца 12). Проблема в том, что в коде Rowcounter отказывается уменьшаться после каждого l oop, в то время как Colcounter увеличивается очень хорошо. Что я делаю не так?

    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 :

1 Ответ

0 голосов
/ 15 февраля 2020

Проблема не в том, что ваш RowCounter не уменьшается, а в том, что вам нужно переместить инициализацию ColCounter внутри первого l oop, в начале. Оценка while(ColCounter < MultiArray[multiplier - 1].length) всегда будет возвращать значение false после первой итерации, поскольку ColCounter достиг размера вашего массива.

...