import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        String[] arr = new String[a];
        for (int i = 0; i < a; i++) {
            arr[i] = in.next();
        }
        //排序
        for (int i = 0; i < a - 1; i++) {
            for (int j = 0; j < a - i - 1; j++) {
                int cout = 0;
                compare:
                for (int k = 0; k < arr[j].length() && k < arr[j + 1].length(); k++) {
                    if (arr[j].charAt(k) > arr[j + 1].charAt(k)) {
                        String tmp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = tmp;
                        break compare;
                    } else if (arr[j].charAt(k) < arr[j + 1].charAt(k))break compare;
                    else if (arr[j].charAt(k) == arr[j + 1].charAt(k)) {
                        cout++;
                    }
                    if (cout == arr[j + 1].length()) {
                        String tmp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = tmp;
                        break compare;
                    }
                }
            }
        }
        //输出
        for (int i = 0; i < a; i++) {
            System.out.println(arr[i]);
        }
    }
}

这次是字符串排序,要按照字典顺序排,第一步依然是构建一个字符串数组,将输入的字符串载入到字符串数组中

这次给了数量,所以先定义一个int型去获取数量,之后用一个for循环去载入这个字符串数组

int a = in.nextInt();

String[] arr = new String[a];

for (int i = 0; i < a; i++) {

arr[i] = in.next();

}

之后就是排序,字典排序有以下需求

按照字符顺序排列,从第一个字符依次比较下去,如果字符一样,字符少的排前面,所以我设计了三个if

for (int i = 0; i < a - 1; i++) {//还是排序的思想,按照冒泡排序的方式做的排序

for (int j = 0; j < a - i - 1; j++) {

int cout = 0;

compare:

for (int k = 0; k < arr[j].length() && k < arr[j + 1].length(); k++) {

if (arr[j].charAt(k) > arr[j + 1].charAt(k)) {//如果大就交换然后退出·

String tmp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = tmp;

break compare;

} else if (arr[j].charAt(k) < arr[j + 1].charAt(k))break compare;//如果小就交换,也要退出,不然会出现第一个小,第二个大然后交换的情况

else if (arr[j].charAt(k) == arr[j + 1].charAt(k)) {//如果一样就进行计数

cout++;

}

if (cout == arr[j + 1].length()) {//如果计数器和后一个字符串长度一样,那么证明后面的短,也要交换

String tmp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = tmp;

break compare;

}

}

}

}

最后输出字符串数组

for (int i = 0; i < a; i++) {

System.out.println(arr[i]);

}