繁体   English   中英

Java查找最大元素

[英]Java Finding Max Element

我正在尝试不使用而找到最大元素

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)

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

你的代码应该是:

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

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

for (int qqq : arrayList)

尝试这个:

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

您正在将变量qqq声明为整数数组。
此声明不正确的原因是因为arrayList是一维数组,这意味着它包含Integer而不是Integer的数组。
假设你希望来检查内的每个整数arrayList中的方法参数,你就需要更换int[]与声明int所以,它的检查对于每个整数,而不是整数的每个阵列。

关于另一个错误,不需要嵌套for循环。 说:

for (int vvv : qqq)

qqq声明为Integer时,实际上是在说“对于整数中的每个整数”,这没有意义-因此是错误。 您可以使用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;
}

尝试这个:

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;
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM