如何用通用方法找出最低值?

时间:2014-02-28 13:43:23

标签: java arrays generics arraylist

我正试图解决一个关于使用循环找出数组中最低值的练习。练习是关于泛型的。但我很难找到解决方案。对于字符串数组,我将使用“ 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;
   }
}

3 个答案:

答案 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
}