繁体   English   中英

我如何将两个双精度型二维数组相互比较?

[英]How do i compare two double type 2D arrays with eachother?

我有一个作业要编写一个程序来制作测量图表(由math.random生成)。 这部分已经完成并且所有功能都在运行,但下一步是指出最大值在哪一列。

我开始创建一个与第一个完全相同的新 2d 数组,然后使用Arrays.sort对其进行Arrays.sort因此我知道哪个值最高。

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

这是什么出现:

“线程“main”java.lang.ClassCastException 中的异常:class [D 无法转换为 java.lang.Comparable 类([D 和 java.lang.Comparable 位于加载器‘bootstrap’的模块 java.base 中)在 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.爪哇: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);
  }
  }
}

无需排序。 只需遍历数组并找到最大值。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM