返回数组中的最大值

时间:2016-02-18 02:05:02

标签: java arrays

我是Java的初学者,我试图找出为什么我的方法没有返回输入数组中的最大值。我的想法是,当调用方法时,for循环将搜索数组的每个值。然后它开始将第一个值设置为最大值,然后任何大于该值的值将成为此后的最大值。

非常感谢任何帮助!

public double displayLargest (double[][] l) {
    for (int x=0; x < l.length-1; x++) {
        for (int y=0; y < l[x].length; y++) {
            double w = l[0][0];
            if (w < l[x][y]) {
                x++;
                y++;
                w = l[x][y];
                maxValue = w;
            }
        }
    }
    System.out.println("The largest value in the array is: " + maxValue);
    return maxValue;
}

5 个答案:

答案 0 :(得分:2)

以下方法将返回double的2D输入数组中的最大值,如果没有值,则返回null

public Double displayLargest(double[][] l){
    Double maxValue = null;

    for (int x=0; x < l.length; x++) {
        for (int y=0; y < l[x].length; y++) {

            if (maxValue == null || maxValue < l[x][y]) {
                maxValue = l[x][y];
            }
        }
    }

    System.out.println("The largest value in the array is: " + maxValue);

    return maxValue;
}

答案 1 :(得分:0)

    double maxVal = -Double.MAX_VALUE;  // see http://stackoverflow.com/questions/3884793/why-is-double-min-value-in-not-negative
    for(int x =0; x<l.length; x++){
        for(int y=0; y<l[x].length; y++){

            double w = l[x][y];
            maxVal = Math.max (maxVal, w);
        }
    }

    System.out.println("The largest value in the array is: " +maxVal);

另见https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#min(double,%20double)

答案 2 :(得分:0)

double max = l[0][0];
//two loops here
if(max < l[x][y])//inside two loops
{
   max = l[x][y]
}

您总是将数组的第一个值赋给w,您应该在任何循环之前声明它。否则,您始终将该值与l [0] [0]进行比较。

答案 3 :(得分:0)

我给出了简单的方法。

int[][] array2 = 
   {{1, 2, 3, 4, 5},
    {6, 7, 8, 9, 10},
    {11, 12, 13, 14, 15},
    {16,17,18,19}};
      int result = Arrays.stream(array2)
    .flatMapToInt(h2 -> Arrays.stream(h2))
    .min()
    .getAsInt();
      System.out.println(result);

这是最大

int[][] array2 = 
   {{1, 2, 3, 4, 5},
    {6, 7, 8, 9, 10},
    {11, 12, 13, 14, 15},
    {16,17,18,19}};
      int result = Arrays.stream(array2)
    .flatMapToInt(h2 -> Arrays.stream(h2))
    .max()
    .getAsInt();
      System.out.println(result);

答案 4 :(得分:0)

我会强烈 推荐从有意义的变量名称开始。接下来,我建议您更喜欢for-each loop而不是传统的for循环(尤其是在嵌套循环时)。最后,我默认NaN,这样你可以处理null和空数组。像,

public static double displayLargest(double[][] arrayOfArray) {
    double maxValue = Double.NaN;
    if (arrayOfArray != null) {
        for (double[] array : arrayOfArray) { // <-- for each array in arrayOfArray
            for (double value : array) {      // <-- for each value in the array
                if (!Double.isNaN(maxValue)) {
                    maxValue = Double.max(maxValue, value);
                } else { // <-- the first value.
                    maxValue = value;
                }
            }
        }
    }
    System.out.println("The largest value in the array is: " + maxValue);
    return maxValue;
}