Java查找最大元素

时间:2016-02-26 14:30:36

标签: java arraylist

我试图在不使用

的情况下找到最大元素
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)

6 个答案:

答案 0 :(得分:1)

增强的for循环从提供的Collection中获取每个值并处理它。

您的代码应为:

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

答案 1 :(得分:0)

arrayList是一维数组,因此for (int[] qqq : arrayList)错误

使用for (int qqq : arrayList)

答案 2 :(得分:0)

试试这个:

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

答案 3 :(得分: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;
}

答案 4 :(得分: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;
}

答案 5 :(得分:-1)

如何使用Streams?虽然int[]不起作用,但请考虑使用Integer[]或直接使用List<Integer>

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