Кажется, моя программа игнорирует мой метод CompareTo(), который я написал
Мне дали код и пришлось заполнить 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]));
}
}
2 ответа
Массив, созданный в методе main, содержит String
объекты, а не testString
объекты. Если вы хотите сравнить экземпляры testString
класс, а затем создать массив этих объектов.
testString[] array1 = new testString[]{new testString("dog")...};
Также обратите внимание, что имена классов должны быть заглавными, а переменные начинаются со строчной буквы.
Так как 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]));
Как примечание стороны:
- Классы в Java начинаются с заглавной буквы по соглашению (
TestString
). - Переменные в Java начинаются со строчной буквы по соглашению (
array1
). Вы должны использовать
@Override
аннотация:@Override public String toString() {...} @Override public int compareTo(...) {...}
Это приведет к ошибке компилятора и предупредит вас, если есть проблема, и вы на самом деле не перезаписываете. (Например, при опечатке или неверном типе параметра.)