В чем ошибка (получение от пользователя N, создание матрицы 3х3, заполнение ее рандомными числами и вывод минимального элемента побочной диагонали)?
import java.util.Random;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Input N>=3: ");
int num = in.nextInt();
// int num=3;
Random r = new Random();
if (num >= 3) {
int[][] array = new int[3][3]; //объявление двумерного массива размерностью 3 на 3
for (int i = 0; i < array.length; i++) {//цикл для выделения памяти для каждого подмассива
for (int j = 0; j < array.length; j++) {
array[i][j] = r.nextInt(100);//генерация матрицы со случайными значениями
//System.out.print(array[i][j]+"\t");
}
// System.out.print("\n");
}
int minDiag = array[0][0];//мин элемент матрицы - начальное значение
for (int i = 0; i < array.length; i++) {
minDiag = Math.min(minDiag, array[i][i]);// поиск мин элемента матрицы
}
System.out.println(minDiag);//вывод мин элемента
} else {
System.out.println("Wrong N");
}
}
}
Ответы (1 шт):
Автор решения: Waden
→ Ссылка
Если добавить метод для выведения значения массива
static void write(int[][] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
то будет видно, что в этом цикле вы ищете минимальной элемент главной диагонали
for (int i = 0; i < array.length; i++) {
minDiag = Math.min(minDiag, array[i][i]);// поиск мин элемента
// матрицы
}
Надо этот цикл заменить на такой и тогда всё будет работать корректно
for (int i = 0, j = array.length - 1; i < array.length; i++, j--) {
minDiag = Math.min(minDiag, array[i][j]);
}