Генерация чисел и отображение матрицы в консоли не правильно работают
Начал решать данную задачу:
Дана целочисленная матрица размера M × N. Найти номер последней из ее строк, содержащих максимальное количество одинаковых элементов.
Составил код, но когда происходит компиляция, генерация чисел везде заполняется нулями, и неправильно отображается матрица в консоли. Помогите пожалуйста найти ошибку и как исправить, чтобы код заработал правильно ?
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rnd = new Random(); // Создаём экземпляр генератора случайных чисел(будем заполнять матрицу случайными числами)
int n = 8, m = 9; // Объявляем константы для задания размерности матрицы
int [][]matrix = new int[n] [m]; // Создаём матрицу размерностью NxM
int i, j, z, temp1 = 1, temp2 = 1, maxi = -1; // Объявлем целочисленные переменные
System.out.println("Рандомная матрица:");
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
matrix[i] [j] = (int) Math.random()*10; // В цикле присваиваем каждому элементу матрицы случайное число
System.out.println("{0} "+ matrix[i] [j]); // И сразу же выводим его в консоль
}
System.out.println();
}
for (i = 0; i < n; i++)
{
for (j = 0; j < m-1; j++)
{
z = j+1;
// В цикле сравниваем элемент matrix[i, j] с последующими в данной строке, если нашли одиноковый увеличиваем счётчик temp1 на единицу(количество одиноковых элементов)
while (z < m)
{
if (matrix[i] [j] == matrix[i] [z])
{
temp1++;
}
z++;
}
}
// Если в данной строке одинаковых элементов больше чем в предыдущих запоминаем индекс данной строки
if (temp1 > temp2)
{
temp2 = temp1;
maxi = i;
}
temp1 = 1;
}
// Вывод ответа с индексом строки содержащей максимальное количество одинаковых элементов
if (maxi == -1)
{
System.out.println("Строк с одинаковыми элементами не существует");
}
else
{
System.out.println("Индекс строки с максимальным количеством одиноковых элементов: {0}" + maxi);
}
System.out.println();
}
}
[![Что выходит][1]][1]
[1]: https://i.stack.imgur.com/zy5lY.png
Ответы (1 шт):
Math.random() генерирует числа от 0 до 1 (не включая 1)
например
0.777328667250996
0.49824728555371
matrix[i] [j] = (int) Math.random()*10;
следовательно (int) Math.random()*10 всегда будет 0.
пробуй так (int) (Math.random() * 10)
создал рандом и не используешь Random rnd = new Random();
rnd.nextInt(2) будет генерировать 2 числа - 0,1
rnd.nextInt(10)будет генерировать 10 чисел -от 0 до 9(включительно)
(rnd.nextInt(10)+1) - числа от 1 до 10(включительно)