#java #arrays
#java #массивы
Вопрос:
У меня есть задание написать программу для создания диаграммы измерений (которые генерируются с math.random
помощью). Эта часть выполнена, и все работает, но следующий шаг — указать, в каком столбце находится максимальное значение.
Я начал создавать новый 2d-массив, который точно такой же, как и первый, а затем сортировал его, используя Arrays.sort
, чтобы я знал, какое значение было самым высоким.
Затем я попытался написать код, который сравнивал все значения в первом массиве с максимальным значением, которое я получил. (Я использовал цикл for, поэтому, когда значения совпадали, я бы знал позицию наибольшего значения) Но это не работает,
Это то, что возникает:
«Исключение в потоке «main» java.lang.ClassCastException: класс [D не может быть приведен к классу java.lang.Сопоставимый ([D и java.lang.Сопоставимые находятся в модуле java.base загрузчика ‘bootstrap’) в java.base / java.util.ComparableTimSort.countRunAndMakeAscending(ComparabetTimSort.java:320) в java.base/java.util.ComparableTimSort.sort(ComparabetTimSort.java:188) в java.base/java.util.Arrays.sort(Arrays.java: 1040)»
Я очень открыт для всех предложений и помощи, которые я могу получить! Также, если вам нужно, чтобы я показал написанный мной код, дайте мне знать!
В противном случае, хорошего дня!
РЕДАКТИРОВАТЬ: это мой написанный код для последней части.
java.util.Arrays.sort(peak);
double peak2 = peak[x][y];
//Testing for highest value
for (int i = 0; i < x; i )
{
for (int k = 0; k < y; k )
{
double value2 = value[k][i];
if (value2 == peak2)
{
System.out.println("The highest value: " peak2 "is in cell " i ", " k);
}
}
}
Комментарии:
1. Вы всегда должны публиковать свой код, чтобы мы могли видеть, откуда может возникнуть ошибка.
2. Arrays.deepEquals(multiArray1, multiArray2)
Ответ №1:
Нет необходимости в сортировке. Просто выполните итерацию по массиву и найдите максимальное значение.
double maxVal = peak[0][0];
int maxRow = 0;
int maxCol = 0;
for (int row = 0; row < peak.length; row ) {
for (int col = 0; col < peak[row].length; col ) {
if (peak[row][col] > maxVal) {
maxVal = peak[row][col];
maxRow = row;
maxCol = col;
}
}
}
System.out.printf("The highest value: %f is in cell %d, %d%n",
maxVal,
maxRow,
maxCol);