1.创建一个长度是5的随机字符串,随机字符有可能是数字,大写字母或者小写字母
给点提示: 数字和字符之间可以通过互相转换
char c = 'A';
short s = (short) c;
通过这个手段就能够知道字符 a-z A-Z 0-9 所对应的数字的区间了
/*
'0'-'9':48-57
'A'-'Z':65-90
'a'-'z':97-122
*/
char[]cs = new char[5];
for(int i=0;i<5;) {
//m是取值在48到122之间的随机数
int m = (int )(48+Math.random()*(122-48+1));
if((m>='0'&&m<='9')||(m>='A'&&m<='Z')||(m>='a'&&m<='z')) {
cs[i] = (char) m;
i++;
}
}
//把字符数组转化成字符串
String str = String.valueOf(cs);
System.out.println(str);
2.创建一个长度是8的字符串数组
使用8个长度是5的随机字符串初始化这个数组
对这个数组进行排序,按照每个字符串的首字母排序(无视大小写)
注1: 不能使用Arrays.sort() 要自己写
注2: 无视大小写,即 Axxxx 和 axxxxx 没有先后顺序
public static String randomString() {
char[]cs = new char[5];
for(int i=0;i<5;) {
int m = (int )(48+Math.random()*(122-48+1));
if((m>='0'&&m<='9')||(m>='A'&&m<='Z')||(m>='a'&&m<='z')) {
cs[i] = (char) m;
i++;
}
}
return new String(cs);
}
public static void main(String[] args) {
String[]ss = new String[8];
System.out.println("原数组:");
for(int i=0;i<ss.length;i++) {
ss[i] = randomString();
System.out.println(ss[i]);
}
for(int i = 0;i<ss.length;i++) {
//冒泡排序
for(int j = 0;j<ss.length-i-1;j++) {
//字符串转化成字符数组
char cs1[] = ss[j].toCharArray();
char cs2[] = ss[j+1].toCharArray();
if(Character.isLetter(cs1[0])) {
//如果首字符是字母,就全部转换成大写字母
cs1[0]=Character.toUpperCase(cs1[0]);
}
if(Character.isLetter(cs2[0])) {
cs2[0]=Character.toUpperCase(cs2[0]);
}
if(cs1[0]>cs2[0]) {
String tmp = ss[j];
ss[j] = ss[j+1];
ss[j+1] = tmp;
}
}
}
System.out.println("现数组:");
for(int i = 0;i<ss.length;i++) {
System.out.println(ss[i]);
}
}