2015-07-29 2 views
-1

Я хочу добавить матричные антидиагональные элементы NxN, используя цикл for в java-программе.Java добавляет матричные антидиагональные элементы

Этот код (2 условия) не работает, потому что он всегда говорит, что цикл выполняется sum2 = 0.

for (int i=0,j=t-1; i<t && j==0; i++, j--) { 
    sum2 = sum2 + aNumber[i][j]; 
} 

Вместо этого этот (одно условие) работает хорошо.

for (int i=0, j=t-1; i<t ; i++, j--) { 
    sum2 = sum2 + aNumber[i][j]; 
} 

Почему не работает первый код?

+0

'= у = т-1 && J = 0' - это именно тот код, который у вас есть? –

+0

Нет, извините, я скопировал это плохо. Это i v8rs

+0

, чтобы получить сумму антидиагональных значений для значений ячейки. Но вы получаете только 'aNumber [i] [0];' –

ответ

2

В первом примере цикл завершается, как только j != 0, если t > 1 это означает, что он закончится немедленно, не создавая итераций вообще.

1

Попробуйте что-то вроде этого:

int maxIndex = matrix.length - 1; 
int sum = 0; 
for (int i = 0; i <= maxIndex; i++) { 
    sum += matrix[i][maxIndex - i]; 
} 

Это опирается на тот факт, что сумма индексов каждого антидиагонального элемента в точности равна N.

Смежные вопросы