我正试图解决一个关于使用循环找出数组中最低值的练习。练习是关于泛型的。但我很难找到解决方案。对于字符串数组,我将使用“ if(minimum.compareTo(list [i])> 0)”。我陷入了如何使用整数数组执行此操作。任何提示或帮助都非常感激。
有我的代码:
public class Excercise {
public static void main(String[] args) {
//Create an array
Integer[] intArray = { new Integer(45), new Integer(2), new Integer(6), new Integer(15) };
//print the lowest value
System.out.print(min(intArray));
// min(intArray);
}
public static <E extends Comparable<E>> E min(E[] list) {
E minValue = list[0];
for(int i = 1; i < list.length; i++) {
if(minValue.compareTo(list[i]) { <-- i get an error her
minValue = list[i];
return minValue;
}
}
答案 0 :(得分:2)
因为compareTo()方法将返回整数值 改变
if(minValue.compareTo(list[i]) {
到
if(minValue.compareTo(list[i]) > 0) {
答案 1 :(得分:2)
compareTo
未返回boolean
,因此您无法将其用作if
子句的条件。
请参阅http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html#compareTo%28T%29
相反,它返回int。如果结果高于零,则表示第一个术语更大。如果低于,则较小。
所以请改用if(minValue.compareTo(list[i])>0))
。
代码中还有其他错误(主要是拼写错误)。我会留给你的。
答案 2 :(得分:1)
正确的方法应如下:
public static <E extends Comparable<E>> E min(E[] list) {
E minValue = list[0];
for(int i = 1; i < list.length; i++) {
if( minValue.compareTo(list[i]) > 0) { //compareTo always returns an int
minValue = list[i];
}
}
return minValue; // returs the minimum after checking all the array
}