阵列数组2D最大值

时间:2016-08-24 16:48:03

标签: java arrays

我很难为我的场景制作逻辑,我考虑将数组阵列更具体地称为2D数组。我想在2D数组中找到最大值,我不想在main方法中调用它。我把数组作为匿名,并通过静态数据成员调用max的函数。代码如下。让我知道在二维数组中找到最大的no的逻辑,因为我发现难以与哪个值进行比较数组。代码如下: -

class Max2DArray
{
    static int i;
    static int j;
    static int large;//largest number

    int max(int x[][])
    {
        for(int i=0;i<x.length;i++)
        {
            for(j=0;j<x[i].length;i++)
            {
                if(x[i][j]<=???)//what should be the comparison here.
                {
                    ??//what should be done here??
                }
            }
        }
        return large
    }
    public static void main(String... s)
    {
        Max2DArray m1 = new Max2DArray();
        int t = m1.max(new int[][]{{20,10,5},
                                   {5,7,6},
                                    {23,31,16}});
        System.out.println("the largest number is = "+t);
    }
}

3 个答案:

答案 0 :(得分:2)

试试这个:

int max(int x[][]){
    // Initialize the value to the lowest value
    int large = Integer.MIN_VALUE;
    for(int i = 0; i < x.length; i++) {
        for(j = 0; j < x[i].length; j++) {
            // Check if the current value is greater than large
            if(x[i][j] > large) {
               // It is greater so we keep the new value
               large = x[i][j];
            }
        }
    }
    return large;
}

使用java 8,它可能只是:

int max(int x[][]){
    return Arrays.stream(x).flatMapToInt(IntStream::of).max().getAsInt();
}

答案 1 :(得分:2)

我不打算给你解决,但这是一个算法

  1. 有一个局部变量max
  2. 将max指定给数组的第一个值
  3. 遍历数组并在找到大于当前最大值的值时更改max的值。
  4. return max

答案 2 :(得分:0)

Java 8 one-liner,而不是for for循环:

Arrays.stream(x).flatMapToInt(arr2 -> Arrays.stream(arr2)).max().getAsInt();