2016-02-18 242 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

是的,我明白你的观点。 –