我正在使用Collections.max(array);确定所选数组中的最大数字是多少。但是,当我使用它时,我收到错误消息:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method max(Collection<? extends T>) in the type Collections is not applicable for the arguments (int)
at Array_6.main(Array_6.java:23)
我的代码如下:
int input;
int highestNumber = 0;
int arrayNumber = 0;
int[] intArray = new int[10];
System.out.println("This application determines the highest number out of 10 inputed numbers");
System.out.println("Welcome, please input the first number:");
for (int i = 0; i < 10; i++){
System.out.print(i+1 + ": ");
input = TextIO.getlnInt(); // Retrieves input
intArray[i] = input;
}
highestNumber = Collections.max(arrayInt);
System.out.println("Highest Number is " + highestNumber);
修改的
我做了下面推荐的内容和消息
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Type mismatch: cannot convert from int[] to int
Bound mismatch: The generic method max(Collection<? extends T>) of type Collections is not applicable for the arguments (List<int[]>). The inferred type int[] is not a valid substitute for the bounded parameter <T extends Object & Comparable<? super T>>
at Array_6.main(Array_6.java:24)
出现,所以我将int highestNumber更改为一个数组。然后出现此错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Bound mismatch: The generic method max(Collection<? extends T>) of type Collections is not applicable for the arguments (List<int[]>). The inferred type int[] is not a valid substitute for the bounded parameter <T extends Object & Comparable<? super T>>
at Array_6.main(Array_6.java:24)
答案 0 :(得分:5)
Collections
是集合API的实用程序类。 arrayInt
是一个int
数组,与Collections
类提供的任何内容完全不兼容
您可以尝试使用...
highestNumber = Collections.max(Arrays.asList(intArray));
将 intArray
包裹在List
界面中,使其与Collections
API
正如@LouisWasserman指出的那样,上述内容将不起作用,因为Collections.max
将取消基于Object
的基于Collection
非基元。
最简单的解决方案可能是在输入时检查每个值,例如....
for (int i = 0; i < 10; i++) {
System.out.print(i + 1 + ": ");
input = TextIO.getlnInt(); // Retrieves input
intArray[i] = input;
highestNumber = Math.max(input, highestNumber);
}
或者您也可以使用Arrays.sort(intArray)
对intArray
进行排序,然后选择数组中的最后一个元素,这将是最高的......
或者您可以创建第二个循环并使用intArray
遍历Math.max
中的每个元素以查找最大值...
或者您可以创建List<Integer>
集合并将intArray
中的每个项目添加到其中,然后使用Collections.max
...
或者您可以使用Integer[]
数组而不是int[]
数组...
或者您可以创建一个List<Integer>
集合,而不是完全使用数组......
答案 1 :(得分:1)
在Java 8中,
highestNumber = Arrays.stream(intArray).max().getAsInt();