Java 如何用一般方法找出最低值?

Java 如何用一般方法找出最低值?,java,arrays,generics,arraylist,Java,Arrays,Generics,Arraylist,我正在尝试解决一个关于使用循环查找数组中的最小值的练习。这个练习是关于泛型的。但是我有一个很难找到解决办法的问题。对于字符串数组,我将使用“if(minimum.compareTo(list[i])>0)”。我被困在如何使用整数数组来实现这一点上。任何提示或帮助都将不胜感激 这是我的代码: public class Excercise { public static void main(String[] args) { //Create an arra

我正在尝试解决一个关于使用循环查找数组中的最小值的练习。这个练习是关于泛型的。但是我有一个很难找到解决办法的问题。对于字符串数组,我将使用“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;
   }
}
公共课练习{
公共静态void main(字符串[]args){
//创建一个数组
整数[]intArray={新整数(45)、新整数(2)、新整数(6)、新整数(15)};
//打印最低值
系统输出打印(最小(凹面));
//min(intArray);
}
公共静态最小值(E[]列表){
最小值=列表[0];
for(int i=1;i

因为compareTo()方法将返回整数值 改变


compareTo
不返回
布尔值,因此不能将其用作
if
子句的条件

相反,它返回一个int。如果结果大于零,则意味着第一项更大。如果它小于,则其较小

因此,请使用
if(minValue.compareTo(list[i])>0))


代码中还有其他错误(主要是打字错误)。我将把这些错误留给您。

compareTo
不会返回
布尔值,因此您不能将其用作
if
子句的条件

相反,它返回一个int。如果结果大于零,则意味着第一项更大。如果它小于,则其较小

因此,请使用
if(minValue.compareTo(list[i])>0))


代码中还有其他错误(主要是打字错误)。我将把这些错误留给您。

正确的方法如下:

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
}
publicstaticemin(E[]列表){
最小值=列表[0];
for(int i=1;i0{//compareTo始终返回一个int
最小值=列表[i];
}
}
return minValue;//检查所有数组后返回最小值
}

正确的方法如下:

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
}
publicstaticemin(E[]列表){
最小值=列表[0];
for(int i=1;i0{//compareTo始终返回一个int
最小值=列表[i];
}
}
return minValue;//检查所有数组后返回最小值
}

您需要一个数字子类来比较()可能一个cast会有帮助?
Collections.min(Arrays.asList(yourray))
您需要一个数字子类来比较()可能一个cast会有帮助?
Collections.min(Arrays.asList(yourray))
我明白了:操作符>对于参数类型是未定义的当我使用:if(minValue.compareTo(list[i]>0)…我不明白我得到的是:操作符>对于参数类型是未定义的E,int..当我使用:if(minValue.compareTo(list[i]>0)…我不明白我得到的是:操作符>对于参数类型是未定义的E,int..当我使用:if(minValue.compareTo(list[i]>0)…我不理解您缺少一个“'),我将编辑答案以使其更清晰。我得到以下信息:运算符>对于参数类型E,int.未定义。当我使用:if(minValue.compareTo(list[i]>0)…我不理解您缺少一个“)“,我将编辑答案以使其更清晰。它既不能工作>0也不能工作<0!!-你说的其他错误是什么意思?对我来说,似乎一切都好,不受我要求的限制!它工作正常。我尝试并运行了你的代码。当然,你需要修复其他语法错误。我得到了它(但使用>0更好)。谢谢你的帮助和建议。它既不工作,也不工作。>0或<0!!-你说的其他错误是什么意思?对我来说,似乎一切都好,不受我要求的限制!它工作正常。我尝试并运行了你的代码。当然,你需要修复其他语法错误。我得到了它(但使用>0更好)。谢谢你的帮助和建议。
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
}