本文为在How2j的学习总结,只代表个人见解,如有不妥,望指出以便更正。
问题描述:创建一个长度是8的字符串数组,使用8个长度是5的随机字符串初始化这个数组,对这个数组进行排序,按照每个字符串的首字母排序(无视大小写)
注1: 不能使用Arrays.sort() 要自己写
注2: 无视大小写,即 Axxxx 和 axxxxx 没有先后顺序
import java.util.Arrays;
public class Test_String_sort {
// 字符串数组排序
// 创建一个长度是8的字符串数组
// 使用8个长度是5的随机字符串初始化这个数组
// 对这个数组进行排序,按照每个字符串的首字母排序(无视大小写)
private static String getrandomstr(int length) {
// 定义一个静态的方法,讲方法与main()分离,减少耦合,方便修改
// 随机字符串的产生
char[] cs = new char[length];
String pool = "";
for(short i='0'; i<='9'; i++) {
pool = pool + (char)i;
}
for(short i='A'; i<='Z'; i++) {
pool = pool + (char)i;
}
for(short i='a'; i<='z'; i++) {
pool = pool + (char)i;
}
// System.out.println(pool);
for(int i=0; i<cs.length; i++) {
int index = (int)(Math.random()*pool.length());
cs[i] = pool.charAt(index); //charAt()用于返回指定索引处的字符
}
String str = new String(cs); //将字符数组转换为字符串输出
return str;
}
private static void stringarraysort(String strA[]) {
// 选择排序法
for(int j=0; j<strA.length-1; j++) {
for(int i=j+1; i<strA.length; i++) {
char firstChar1 = strA[j].charAt(0);
char firstChar2 = strA[i].charAt(0);
firstChar1 = Character.toLowerCase(firstChar1);
firstChar2 = Character.toLowerCase(firstChar2);
if(firstChar1>firstChar2) {
String temp = strA[j];
strA[j] = strA[i];
strA[i] = temp;
}
}
}
System.out.println("字符串数组排序后:"+Arrays.toString(strA));
}
public static void main(String[] args) {
String[] strA = new String[8];
for(int i=0; i<strA.length; i++) {
strA[i] = getrandomstr(5);
}
System.out.println("字符串数组排序前:"+Arrays.toString(strA));
stringarraysort(strA);
}
}
运行结果如下:
字符串数组排序前:[YpT1M, 8I894, piFRZ, Pw2zP, wCWVU, AG0SY, I35Gy, o2keK]
字符串数组排序后:[8I894, AG0SY, I35Gy, o2keK, Pw2zP, piFRZ, wCWVU, YpT1M]