当前位置: 首页 > 知识库问答 >
问题:

从每列中查找最小值和最大值

龚联
2023-03-14

我试图找到矩阵中每列的最小值和最大值,但我当前的代码运行不正确。我试图把最小值放在一个新矩阵的第一行,最大值放在下一行,并对每一列这样做。任何帮助都将不胜感激,谢谢!

public double[][] findMinMaxValuesOfEachColumn(double[][] customerBehaviorMatrix) {
       double[][] minMaxValuesMatrix = new double[2][customerBehaviorMatrix[0].length];
    //assign min and max values to return matrix
    for (int j = 0; j < minMaxValuesMatrix[0].length; j++) {
        minMaxValuesMatrix[0][j] = Double.MAX_VALUE;
        minMaxValuesMatrix[1][j] = Double.MIN_VALUE;
    }
    //for each column find min and max
    //[0][]=min and [1][]=max
    for (int i = 0; i < customerBehaviorMatrix.length; i++) {
        for (int j = 0; j < customerBehaviorMatrix[i].length; j++) {                                
            //check min
            if (customerBehaviorMatrix[i][j] < minMaxValuesMatrix[0][j]) {
                //store min in the return matrix
                minMaxValuesMatrix[0][j] = customerBehaviorMatrix[i][j];
            }               
            //check max
            if (customerBehaviorMatrix[i][j] > minMaxValuesMatrix[1][j]) {
                //store max in the return matrix
                minMaxValuesMatrix[1][j] = customerBehaviorMatrix[i][j];
            }
        }
    }
    return minMaxValuesMatrix;
}

共有1个答案

庾远航
2023-03-14

我为你的方法写了一个JUnit测试,它通过了。

@Test
public void calculatesMinAndMaxValuesForEachColumn() {
    double[][] matrix = {
        {1.0, 2.0, 3.0},
        {4.0, 5.0, 6.0},
        {3.0, -2.0, 9.0}
    };

    double[][] minMaxMatrix = findMinMaxValuesOfEachColumn(matrix);

    double tolerance = 0.0001;

    double[] minValues = minMaxMatrix[0];
    assertEquals(1.0, minValues[0], tolerance);
    assertEquals(-2.0, minValues[1], tolerance);
    assertEquals(3.0, minValues[2], tolerance);

    double[] maxValues = minMaxMatrix[1];
    assertEquals(4.0, maxValues[0], tolerance);
    assertEquals(5.0, maxValues[1], tolerance);
    assertEquals(9.0, maxValues[2], tolerance);
}

如果你可以写一个失败的测试,那么用测试编辑你的帖子,我们会帮助调试它。

 类似资料: