1
public abstract class Main implements Comparable {

    public static 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();

      /* Code to call max method and display the largest value of these */



    }

    public static Object max (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;
    }

    public int compareTo(Object o) {

            if (/*this*/ > o)
                return 1;
            else if (/*this*/ < o)
                return -1;
            else
                return 0;
        }
}

虽然以通用的 max(a, b) 格式编写它可能更容易,但其中一个要求是以这种方式编写。我找不到引用实际调用 compareTo 方法的对象值的方法。

4

1 回答 1

2

关注点:

  • 为什么 Main 实现 Comparable?——不应该。
  • 为什么主要是抽象的?——不应该。
  • 为什么你的代码中有自己的 compareTo 方法?——你不应该。无论如何它从来没有被调用过(也不应该被调用)。

相反,只需使用您知道 Comparable 对象具有的 compareTo 方法。你知道a数组中的每一项,不管是什么类型的项,都实现了Comparable,所以你可以直接在该项上调用这个方法:

例如,

a[i].compareTo(a[i+1])

You know of course that the simplest solution is to just call java.util.Arrays.sort(a) on the array a and just take the 0th item.

于 2011-11-08T05:13:22.387 回答