Как мне сравнить два 2D-массива двойного типа друг с другом?

#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);