У меня есть следующий код, в котором матрица определяется через вход системы:объект Сканер держит ожидает ввода
import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//define size of matrix
int size = in.nextInt();
int primeSum = 0;
int secSum = 0;
int[] matrix = new int[size*size];
//create matrix
for (int i=0; i<size*size;i++) {
matrix[i] = in.nextInt();
}
in.close();
//sum primary diagonal
for (int i=0; i < size*size;i += (size + 1)) {
primeSum = primeSum + matrix[i];
}
////sum secondary diagonal
// for (int i=(size - 1); i < size*size; i += (size - 2)) {
// secSum = secSum + matrix[i];
// }
System.out.println(Math.abs(secSum - primeSum));
}
}
Код выше работает в том, что оно позволяет пользователю определить матрицу NxN через ввод N как size - поэтому в случае size = 2 пользователь будет определять 4 элемента матрицы. Однако, после комментирования кода вторичной диагонали, объект сканера продолжает ожидать входные данные из 4 целых чисел - я понятия не имею, почему это повлияет на программу, когда я закрываю входной поток до того, как этот блок кода будет достигнут.
Только представьте себе ваш пример, вы работаете в бесконечном цикле: Matrix размер = 2. Как вы думаете, 'I + = (размер - 2) 'будет увеличивать' i'? Обратите внимание, что каждый размер> 2 снова будет работать. – SomeJavaGuy
Нет, но в случае size = 3 и за его пределами будет – BenWS
Да, но тогда условие 'i
SomeJavaGuy