학교 프로젝트의 배열에서 문자열을 정렬해야합니다. 선생님은 array, sort() 사용을 허용하지 않습니다. 2 가지 정렬 방법을 사용해야하지만 너무 잘 작동하지 않습니다.배열에서 문자열을 사전 순으로 정렬합니다. Java
첫 번째 값은 각 값의 두 배를 반환합니다. 즉 John, jack, adam, tom은 adam, adam, jack, jack, john, john, tom, tom을 반환합니다.
public static void bubbleSort() {
inputFileNames();
for (int i = size - 1; i >= 0; i--) {
for (int j = 0; j <= i; j++) {
if (stArr[j].compareTo(stArr[j+1])>0) {
temp = stArr[j];
stArr[j] = stArr[j + 1];
stArr[j + 1] = temp;
}
}
}
display("The names are: ");
System.out.println("");
}
입력 및 표시 :
static void display(String heading) {
System.out.println(heading + "\n");
for (int i = 0; i < size; i++) {
System.out.println(stArr[i]);
}
}
static void inputFileNames() {
try {
Scanner scFile = new Scanner(new File("Names.txt"));
while (scFile.hasNext()) {
stArr[size] = scFile.nextLine();
size++;
}
} catch (FileNotFoundException ex) {
System.out.println("File not found.");
}
}
'display()'를 볼 수 있습니까? 중복 오류가있을 가능성이 큽니다. Java의 배열은 고정 길이이므로 알고리즘이 버그가 있어도 배열에 두 배나 많은 항목이있는 것은 당연합니다. –
'inputFileNames()'는 이름을 두 번 읽을 수 있으므로 함께 정렬됩니다. – Xen
아니면 그렇습니다. 따라서 배열을 디버거에서 정렬 /보기 전에 게시하고 배열의 내용을 출력하십시오. –