我想出了这个代码来尝试整理一系列字符串(我不想使用整数或导入,因为我试图理解迭代循环),但它只重新排列第一个两个字符串。有谁可以指出我的错误?
public class Alpha8 {
public static void main(String[] args) {
String[] Names = {"O","B","K","S","D","M","N","A"};
String temp = null;
for(int i=0;i<Names.length;i++){
for(int j = i+1;j<Names.length;j++) {
if(Names[j].compareTo(Names[i])<0)
temp = Names[i];
Names[i] = Names[j];
Names[j] = temp;
for( i = 0;i<Names.length;i++){
System.out.println(Names[i]);
}
}
}
}
}
答案 0 :(得分:0)
你犯了两个错误:
您正在“交换”代码中打印数组。您只应在排序完成后打印数组。
您只需迭代一次数组。对于冒泡排序(这是您正在实施的),您需要继续迭代直到没有掉期。
该方法应如下所示:
boolean hasSwapped;
do {
hasSwapped = false;
for (int i = 1; i < names.size(); i++) {
if (names[i-1].compareTo(names[i]) > 0) {
swap(names[i-1], names[i]);
hasSwapped = true;
}
}
} while (hasSwapped);