Магический Квадрат Другая Диагональ

Мой другой метод диагонали не будет работать правильно.

public int sumOtherDiag()
{
   int otherDiag = 0;
   for (int i = 0; i < square.length−1; i++)
   {
      otherDiag += square[i][i];
   }
   return otherDiag;
}

У меня нет вывода, чтобы показать здесь, но есть ли что-то, что кто-то видит неправильно с самого начала?

Этот метод должен добавлять элементы и получать сумму второй диагонали (начиная справа вниз) магического квадрата. Например, если мой квадрат был

01 04 03

03 05 04

05 02 04

Это вывело бы

03 + 05 + 05 = and get 13

Но мой фактический вывод - это печать числа, которое меньше, чем предполагается.

(Трудно объяснить без моего вывода. Я загрузлю его позже, когда получу доступ к своей программе)

Любая помощь будет принята с благодарностью, спасибо!

2 ответа

Давайте разберем ваш код, чтобы увидеть, что вы сделали и чего хотели:

с вашим единственным циклом, что у вас есть ваши координаты [0,0], [1,1] и вы пропустили [2,2] основываясь на моих знаниях, потому что вы выбрали свой последний индекс меньше square.length−1 и вы должны знать, что индекс начинается с нуля до менее чем square.lenght,

если вы запустите этот код:

int[][] array = {{01, 04, 03},
        {03, 05, 04},
        {05, 02, 04}
        };
        int otherDiag = 0;
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i][i]);
        }

ваш результат будет таким

1
5
4

и вы, если вы выбрали array.lenght-1 быть исключенным ваш вывод

1
5

Как вы видите, вы оставили последний индекс, который равен 4, и я уверен, что это не то, что вы ищете.

Вы хотите иметь суммирование диагональных элементов, а не вертикальных элементов

Координаты, которые вы хотите

[0,2], [1,1], а также [2,0]

Использовал мой образец в качестве синего шрифта, чтобы выяснить, что вы хотите

Например, предположим, x = new int[3][4], x[0], x[1], а также x[2] являются одномерными массивами, и каждый содержит четыре элемента, как показано на рисунке x.length является 3, а также x[0].length, x[1].length, а также x[2].length являются 4

Как пройти и использовать 2D-массив, вы можете использовать следующий образец в качестве чертежа:

public int sumOtherDiag()
{
   int otherDiag = 0;
   int count = square.length;
   for (int i = 0; i < square.length; i++)
   {
      otherDiag += square[i][--count];
   }
   return otherDiag;
}
Другие вопросы по тегам