Магический Квадрат Другая Диагональ
Мой другой метод диагонали не будет работать правильно.
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;
}