2016-02-26 50 views
1

我試圖找到最大元素,而無需使用的Java查找最大元素

import java.util.Collections 

public static int maxArrayListValue(int[] arrayList) { 
    int maxVal = Integer.MIN_VALUE; 
    for (int[] qqq : arrayList) { 
     for (int vvv : qqq) { 
      if (vvv > maxVal) { 
       maxVal = vvv; 
      } 
     } 
    } 
    return maxVal; 
} 

但我總是得到一個錯誤for (int[] qqq : arrayList)

(Type mismatch: cannot convert from element type int to int[])

更改爲「for (int qqq : arrayList)」後仍(int vvv:qqq)第二個代碼出錯了

(Can only iterate over an array or an instance of java.lang.Iterable)

回答

1

增強的for循環從所提供的集合取每個值並處理它。

你的代碼應該是:

public static int maxArrayListValue(int[] arrayList) { 
    int maxVal = Integer.MIN_VALUE; 
    for (int vvv : arrayList) { 
     if (vvv > maxVal) { 
      maxVal = vvv; 
     } 
    } 
    return maxVal; 
} 
0

arrayList是1-d陣列,所以for (int[] qqq : arrayList)是錯誤的

使用for (int qqq : arrayList)

+0

這樣做還有一個錯誤,但之後的下一行是「爲( int vvv:qqq)「只能遍歷數組或java.lang.Iterable –

+0

的實例有人可以解釋downvote嗎? – Ramanlfc

-1

有關使用流如何?雖然一個int[]將無法​​正常工作,請考慮使用Integer[]或直接使用List<Integer>

Arrays.asList(arrayList).stream() 
     .sorted(Comparator.reverseOrder()) 
     .collect(Collectors.toList()).get(0); 
0

試試這個:

public static int maxArrayListValue(int[] arrayList) { 
    int maxVal = Integer.MIN_VALUE; 
    for (int qqq : arrayList) { 
     if(qqq > maxVal){ 
      maxVal = qqq; 
     } 
    } 
    return maxVal; 
} 
0

你聲明變量qqq作爲一個整數數組。
此聲明不正確的原因是因爲arrayList是一維數組,意味着它包含整數而不是整數數組。
假設您希望檢查方法中arrayList參數中的每個整數,您需要用int替換int[]聲明,以便它檢查每個整數而不是每個整數數組。

關於其他錯誤,嵌套的for循環不是必需的。說:

for (int vvv : qqq) 

與聲明爲一個整數qqq,你基本上說:「在一個整數每個整數」,這是沒有意義的 - 因此錯誤。 您可以使用qqq而不是vvv,您可以在maxVal之間檢查其有效性。

要解決您遇到這兩個問題,這裏的糾正方法:

public static int maxArrayListValue(int[] arrayList) { 
    int maxVal = Integer.MIN_VALUE; 
    for (int vvv : arrayList) { 
     if (vvv > maxVal) { 
      maxVal = vvv; 
     } 
    } 
    return maxVal; 
} 
0

試試這個:

public static int maxArrayListValue(int[] arrayList) { 
    int maxVal = 0; 
    for (int[] i = 0; i < arrayList.length-1; i ++) { 
      if (arrayList[i] > maxVal) { 
       maxVal = vvv; 
      } 
    } 
    return maxVal; 
}