Java 我的程序似乎忽略了我编写的compareTo()
我得到了代码,必须填写Java 我的程序似乎忽略了我编写的compareTo(),java,compareto,Java,Compareto,我得到了代码,必须填写比较部分。无论出于何种原因,即使我将我的比较注释为代码,当我调用它时,Java仍然会给我一个结果,这让我相信我一定是调用错了。我对这个感到困惑 import java.util.Arrays; public class testString implements Comparable<testString> { String tempStr; public testString(String str) { tempStr =
比较部分。无论出于何种原因,即使我将我的比较注释为代码,当我调用它时,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]));
}
}
导入java.util.array;
公共类testString实现了可比较的{
字符串tempStr;
公共测试字符串(字符串str){
tempStr=str;
}
公共字符串toString(){
返回tempStr;
}
public int compareTo(testString Str2){
字符串temp=Str2.toString();
int temp1=临时长度();
if(tempStr.length()>temp1){
返回1;
}else if(tempStr.length()
在main方法中创建的数组包含String
对象,而不是testString
对象。如果要比较testString
类的实例,请创建这些对象的数组
testString[] array1 = new testString[]{new testString("dog")...};
还要注意类名应该大写,变量以小写字母开头 因为Array1
是字符串的数组因此它从String
调用compareTo
您可能想要的是:
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]));
作为旁注:
- Java中的类按惯例以大写字母开头(
TestString
)
- Java中的变量按约定以小写字母开头(
array1
)
- 您应该使用
@Override
注释:
@Override
public String toString() {...}
@Override
public int compareTo(...) {...}
这将导致编译器错误,并在出现问题且您没有实际重写时发出警告。(例如,输入错误或参数类型不正确时发生。)
谢谢,我会确保遵守约定,我没有意识到这一点。这真的是一件小事,它只是让习惯了约定的Java程序员更容易阅读。这里突出显示的语法也使用它作为提示。另外,如果我想从同一个包中的另一个类调用这个compareTo方法,我是否需要做同样的事情,在不同的类中创建如上所述的数组?这取决于你想做什么,但这听起来很合理。找到答案的最好方法就是尝试一下。