我获得了代码并且必须填写compareTo
部分。无论出于何种原因,即使我注释掉我的compareTo
代码,当我调用它时,Java仍然会给我一个结果,这让我相信我一定是在说错了。我对此感到茫然。
import java.util.Arrays;
public class testString implements Comparable<testString> {
String tempStr;
public testString(String str) {
tempStr = str;
}
public String toString() {
return tempStr;
}
public int compareTo(testString Str2) {
String temp = Str2.toString();
int temp1 = temp.length();
if (tempStr.length() > temp1) {
return 1;
} else if (tempStr.length() < temp1) {
return -1;
} else {
return 0;
}
}
public static void main(String[] args) {
String [] Array1 = new String[]{"dog","giraffe","python","emu","elephant","cow"};
System.out.print(Array1[1].compareTo(Array1[0]));
}
}
答案 0 :(得分:2)
在main方法中创建的数组包含String
个对象,而不是testString
个对象。如果要比较testString
类的实例,请创建这些对象的数组。
testString[] array1 = new testString[]{new testString("dog")...};
另请注意,类名应大写,变量以小写字母开头。
答案 1 :(得分:0)
因为Array1
是String
的数组。 ; )所以它从compareTo
调用String
。
你可能想要的是:
TestString[] array1 = new TestString[] {
new TestString("dog"),
new TestString("giraffe"),
new TestString("python"),
new TestString("emu"),
new TestString("elephant"),
new TestString("cow")
};
System.out.print(array1[1].compareTo(array1[0]));
作为旁注:
TestString
)以大写字母开头。array1
)以小写字母开头。您应该使用@Override
注释:
@Override
public String toString() {...}
@Override
public int compareTo(...) {...}
这将导致编译器错误并在出现问题时发出警告,而您实际上并未覆盖。 (例如错字或参数类型不正确。)