【发布时间】:2015-06-08 16:24:09
【问题描述】:
编写一个返回对象数组中最大对象的方法。方法签名是:
public static Object max(java.lang.Comparable[] a)
所有对象都是java.lang.Comparable 接口的实例。使用compareTo方法确定数组中对象的顺序。
在main方法中编写一个测试程序,创建一个由十个String组成的数组,一个由十个Integer组成的数组,以及一个由十个java.util.Dates组成的数组,并找到最大的String(即按字母顺序),@数组中的 987654326@ 和 Date。
命名你的 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
【问题讨论】:
-
先想想问题。在您从未见过的内容列表中,您观察到的绝对最大元素是负无穷大。你想以此为基础。
-
这会伤害到你:
tempObj = new Object();,因为你创建的对象没有实现compareTo,因此无法比较;不要使用它。而是将 tempObj 设置为数组中要开始的第一项。不要给你的 Max 类一个compareTo方法。这没有必要也不会分散注意力。
标签: java arrays methods interface