두 클래스 Main
및 Object
이 있습니다. 해당 값에 따라 오름차순으로 배열의 객체를 정렬해야합니다. compareTo에서 -1, 1, 0을 반환하고 그에 따라 for 루프를 실행하여 배열을 정렬해야합니다. Arrays.sort를 사용하고 싶지 않습니다. 수동으로해야합니다. Main
클래스의 정렬 부분이 작동하지 않습니다. 어떤 도움이 유용 할 수 있습니다. 고맙습니다.Java compareTo 배열 정렬
public class Main {
public static void main(String[] args) {
Object[] arr = new Object[6];
arr[0] = new Object(2);
arr[1] = new Object(5);
arr[2] = new Object(3);
arr[3] = new Object(1);
arr[4] = new Object(6);
arr[5] = new Object(4);
System.out.println("List of instances");
for (int i = 0; i < 5; i++) {
System.out.println(arr[i].getValue());
}
System.out.println();
Object tempVar;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < 5; j++) {
int result = arr[i].compareTo(arr[i]);
if (result == -1) {
tempVar = arr[j + 1];
arr[j + 1] = arr[i];
arr[i] = tempVar;
}
}
}
System.out.println("List of sorted instances");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i].getValue());
}
}
}
public class Object implements Comparable<Object> {
private int value;
public Object(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
@Override
public int compareTo(Object o) {
int result = 0;
if (this.value > o.getValue()) {
result = 1;
} else if (this.value < o.getValue()) {
result = -1;
} else if (this.value == o.getValue()) {
result = 0;
}
return result;
}
}
클래스 '객체'의 이름을 지정하는 것은 매우 나쁜 생각입니다 ... – August
'int result = arr [i] .compareTo (arr [i]);' .... 그 라인은 항상 0을 반환 못해? 당신은 배열의 동일한 색인을 비교하고 있습니까 –
그 숙제입니까? 'Object' 클래스는 이미 자바로 구현되어 있습니다 :'Integer'를 체크하십시오 – Matthieu