2016-08-24 177 views
-3

我在爲我的場景製作邏輯時遇到了困難,我正在考慮將陣列數組更具體地稱爲2D陣列。我想要在2D陣列中找到我不想調用的最大值它在主要方法。我做數組作爲匿名,並通過靜態數據成員從它調用最大的函數。代碼如下。讓我知道邏輯找到二維數組中最大的否定,因爲我發現它很難到值與array.the代碼進行比較如下: -陣列2D最大值的陣列

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); 
    } 
} 
+0

也許你應該使用名爲'large'的變量? (順便說一下,'large'可能不應該是'static','i'和'j'不應該是字段。) – bradimus

回答

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(); 
} 
+0

不允許單字符編輯;但'大號'應該有一個分號。這將爲一個空的2d數組返回'Integer.MIN_VALUE'。不確定對此有何適當的迴應(IllegalArgumentException?),但值得考慮。否則,正是我要說的:)。 – user2478398

+0

@ user2478398感謝您的評論 –

2

我不打算把它解決了給你,但這裏是一個算法

  1. 有一個局部變量最大
  2. 分配最大的數組的第一個值
  3. 遍歷數組並在每次找到大於當前值max的值時更改max的值。
  4. 回報最大
0

一個Java 8的一行,而不是你的for循環:

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