有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何比较两个双类型2D数组?

我的任务是编写一个程序来制作测量图表(用math.random生成)。这一部分已经完成,所有功能都正常,但下一步是指出最大值在哪个列中

我开始制作一个新的2d数组,它与第一个数组完全相同,然后使用Arrays.sort对它进行排序,所以我知道哪个值最高

然后我尝试编写代码,将第一个数组中的所有值与我得到的最大值进行比较。 (我使用了for循环,因此当值匹配时,我会知道最高值的位置) 但这不起作用

这就是问题的症结所在:

"Exception in thread "main" java.lang.ClassCastException: class [D cannot be cast to class java.lang.Comparable ([D and java.lang.Comparable are in module java.base of loader 'bootstrap') at java.base/java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:320) at java.base/java.util.ComparableTimSort.sort(ComparableTimSort.java:188) at 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) 个答案

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