创建一个长度是8的字符串数组
使用8个长度是5的随机字符串初始化这个数组
对这个数组进行排序,按照每个字符串的首字母排序(无视大小写)
注1: 不能使用Arrays.sort() 要自己写
注2: 无视大小写,即 Axxxx 和 axxxxx 没有先后顺序
package day6;
import java.util.Arrays;
/*
* 创建一个长度是8的字符串数组
使用8个长度是5的随机字符串初始化这个数组
对这个数组进行排序,按照每个字符串的首字母排序(无视大小写)
注1: 不能使用Arrays.sort() 要自己写
注2: 无视大小写,即 Axxxx 和 axxxxx 没有先后顺序
*/
public class TestNumber9 {
public static void main(String[] args) {
String []ss= new String[8];//创建长度为8的字符串数组,每个位置都是一个字符串
for(int i =0;i<ss.length;i++)
{
String randomString=randomString(5);//定义一个字符串变量接收randomString()方法产生的字符串
ss[i]=randomString;//为数组的每一个位置赋一个长度为5的随机字符串,这个随机字符串由字母和数字随即组成,就形成了字符串数组
}
System.out.println("未排序的字符串数组:");
System.out.println(Arrays.toString(ss));//这里如果直接填ss,会输出[Ljava.lang.String;@106d69c,也就是这个字符串数组的地址,这一点要十分注意
//为了能够输出这个字符串数组,应该使用Arrays.toString(ss)
//Arrays.toString()是用来将字符串数组转换成String类型输出的,入参可以是long,float,double,int,boolean,byte,object型的数组。
//因为采用了冒泡法进行排序的思想,也就是相邻两个位置的数组的首字母进行比较,这里就要做一个for循环的嵌套模式
//冒泡排序思想:冒泡排序的基本思想就是:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了无序队列的队尾,
//从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。
//算法的核心在于每次通过两两比较交换位置,选出剩余无序序列里最大(小)的数据元素放到队尾。
for(int j =0;j<ss.length;j++){//第一层其实就是冒泡排序的第i轮
for(int i =0;i<ss.length-j-1;i++){//第二层其实就是第i轮排序的过程
char firstchar1 = ss[i].charAt(0);//这里是将每个位置的字符串的首字母单独赋值给变量firstchar1和firstchar2
//CharAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1
char firstchar2 =ss[i+1].charAt(0);
firstchar1 = Character.toLowerCase(firstchar1);//将首字母统统转成小写,也就是题目中要求的忽略大小写
firstchar2 = Character.toLowerCase(firstchar2);
if(firstchar1>firstchar2){//将i和i+1位置的字母进行比较,并排序
String temp = ss[i];
ss[i]=ss[i+1];
ss[i+1]=temp;
}
}
}
System.out.println("输出排序后的字符串数组:");
System.out.print(Arrays.toString(ss));
}
private static String randomString(int length){//randomString函数的内容:生成长度为5的随机字符串
String pool = "";//定义一个字符串为空
for(short i ='0';i<='9';i++){//进行字符串拼接
pool+=(char) i;
}
for(short i ='a';i<='z';i++){
pool+=(char) i;
}
for(short i ='A';i<='Z';i++){
pool+=(char) i;
}
char cs[]= new char[length];//定义数组,每个位置都是一个字符
for(int i =0;i<cs.length;i++){//定义一个for循环,遍历cs数组的每一个位置、
//这里定义了数组的下标index
int index = (int)(Math.random()*(pool.length()));//Math.random()的范围是0-1
//这里通过random函数随机分配数组的下标Index
cs[i]= pool.charAt(index);//将随即分配字符串pool的下标index代表的字符分给cs数组的每一个位置
}//CharAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1
String result = new String(cs);//将数组转换成字符串
return result;//返回这个字符串
}
}
本文介绍如何创建一个8个长度为5的随机字符串数组,并对其进行排序。排序规则是根据每个字符串的首字母(忽略大小写)进行,不使用Java内置的Arrays.sort()方法,而是实现自己的排序算法。

3万+

被折叠的 条评论
为什么被折叠?



