今天把#3的随机数组生成并转化为字母的代码改进了一下,现在它可以输出随即进行大小写混合的字母了。
public static void ArraysExercise(){
Scanner input = new Scanner(System.in);
double ran1 = 0;//声明一个double变量用来进行大小写随机生成
int ran2 = 0;//声明一个整型变量
System.out.println("输入预期数组内元素的数量:");
int num = input.nextInt();
int[] random = new int[num];//声明数组,长度为用户输入的长度
for(int a = 0;a<random.length;++a){//随机生成大小写的循环
ran1 = (Math.random()) * 10;//首先生成一个随机数
if((int)ran1<5){//通过随机数*10的大小来判断应当生成大写还是小写
ran1 = (Math.random()) * 26;
ran2 = 65 + (int)ran1;//这种条件下生成大写字母
random[a] = ran2;
}else if((int)ran1>=5){
ran1 = (Math.random()) * 26;
ran2 = 97 + (int)ran1;//生成小写字母
random[a] = ran2;
}
}
System.out.println("随机数组为:");
for(int b = 0;b<random.length;++b){
System.out.print(random[b] + " ");
}
System.out.println(" ");
System.out.println("转化为字母为:");
for(int c = 0;c<random.length;++c){
System.out.print((char)random[c] + " ");
}
System.out.println(" ");
System.out.println("小写a出现的次数为:");//我发现小写字母a出现的概率特别低,因此加入了该代码计算a出现的概率
int debug = 0;
for(int d = 0;d<random.length;++d){
char debug2 = 'a';
if(debug2 == (char)random[d]){
debug = debug + 1;
}
}
System.out.println(debug + "次");
System.out.println("占数组内元素总数的" + (float)debug/num + "%");
}
到最后虽然说通过代码计算出了小写字母a的出现频率确实很低,但是没有搞清楚出现这种情况的原因。