此题难点为排序的判断
两个以字符串形式的数从左到右比较大小;
如果是两个长度不同的“数”就按循环比较大小;
即判断哪个放前面更大;
还有就是特殊情况考虑;
import java.util.Scanner;
public class a1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
String x[] = new String[n];
String m = "";
for (int i = 0; i < n; i++) {
x[i] = sc.next();
}
for (int i = 0; i < n; i++) { //采用冒泡排序;
for (int j = n - 1; j > 0; j--) {
char A[] = x[j].toCharArray();
char B[] = x[j - 1].toCharArray();
for (int h = 0, k = 0; h < A.length && k < B.length; h++, k++) {
if (A[h] > B[k]) { //比较大小
m = x[j];
x[j] = x[j - 1];
x[j - 1] = m;
break; //完成判断结束语句
} else if (A[h] < B[k]) {
break;
}
if (h == A.length - 1 || k == B.length - 1
&& A[h] == B[k]) { //特殊情况(即前面判断判断不出的)
if (A.length > B.length) {
m = x[j];
x[j] = x[j - 1];
x[j - 1] = m;
}
}
if (A.length < B.length && h == A.length - 1) { //促进循环比较
h = 0;
}
if (A.length > B.length && k == B.length - 1) {
k = 0;
}
}
}
}
for (int i = 0; i < n; i++) {
if (i == n - 1) {
System.out.println(x[i]);
} else {
System.out.print(x[i]);
}
}
}
}
}