2016-02-18 191 views
0

我是一名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; 
} 
+0

Gawd,我討厭單個字符變量,使代碼如此難以閱讀! – pczeus

回答

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; 
} 
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]進行比較。

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

我會強烈建議你開始有意義的變量名。接下來,我會敦促您比傳統的for循環更喜歡for-each loop(尤其是當您嵌套循環時)。最後,我會默認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; 
} 
+0

@ScaryWombat數組本身就是一個對象。該數組可以爲null,在這種情況下,內部數組可以爲null。 –

+0

是的,我明白你的觀點。 –