编写一个返回对象数组中最大对象的方法

时间:2015-04-03 14:56:18

标签: java arrays methods interface

编写一个返回对象数组中最大对象的方法。方法签名是:

public static Object max(java.lang.Comparable[] a)

所有对象都是java.lang.Comparable接口的实例。使用compareTo方法确定数组中对象的顺序。

在main方法中编写一个测试程序,该方法创建一个包含十个字符串的数组,一个包含十个整数的数组和一个包含十个java.util.Dates的数组,并找到最大的String(即按字母顺序排列)数组中的{),IntegerDate

将您的java类命名为Max和您的java文件Max.java。

我很难掌握这项任务中我需要做的事情。我真正挣扎的两件事是如何使用接口和compareTo方法。根据我的理解,接口只保存方法,然后我必须在接口外调用compareTo方法?无论如何这是我到目前为止。

public class Max {
    public static Object max(java.lang.Comparable[] a) {

        Object tempObj = new Object();

        for (int i = 0; i < a.length - 1; i++) {
            if ((a[i]).compareTo(a[i + 1]) > 0)
                tempObj = a[i];
            else
                tempObj = a[i + 1];
        }

        return tempObj;
    }

    // compare toMethod
    public void CompareTo() {
        a[i].compareTo(a[i + 1]);
    }
}// End Main

class MaxTest implements Max {
    public void main(String[] args) {

        Integer[] intArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        String[] stringArray = { "a", "b", "c", "d", "e", "f", "g", "h", "i",
            "j" };
        java.util.Date[] dateArray = {};

        for (int j = 0; j < 10; j++)
            dateArray[j] = new java.util.Date();

    }// End Main
}//End Class

2 个答案:

答案 0 :(得分:1)

你几乎就在那里但是

  1. public void CompareTo方法无用。顺便说一句,你从不使用它。
  2. 算法不正确。想想通过在纸上执行它会为[4,3,2,1]返回什么。另外,如果我等于a[i + 1],请考虑a.length - 1是什么。数组的有效索引是什么?
  3. 我认为你可以放心地假设你的数组总是至少有一个元素。如果它是一个整数数组,并且它包含42,那么最大元素是多少?是42,还是new Object()
  4. 您的main方法创建了3个数组,但从不使用任何这些数组方法调用max()以查看它是否正常工作。

答案 1 :(得分:0)

怎么样:

public static Object max(Comparable[] a) {
    return Collections.max(Arrays.asList(a));
}
相关问题