中易网

Java中boolean数组随机数问题,以下有代码,两个问题(已标注),求大神解释,谢谢!

答案:3  悬赏:80  
解决时间 2021-12-28 17:40
public static char[] generate() {//定义了一个方法从26个字母随机取出5个字母不能重复

char[] letters = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
'W', 'X', 'Y', 'Z' };
boolean[] flags = new boolean[letters.length]; //问题一:这句是定义一个boolean类型的数组吗?有个问题,boolean 不是只能跟Ture或者false么,这样写一个数组,是单纯定义一个数组,还是把这个flags的数组已经定义成boolean 的一个值了

char[] chs = new char[5];
for (int i = 0; i < chs.length; i++) {
int index;
do {
index = (int) (Math.random() * (letters.length));
} while (flags[index]); // 问题二:while这句括号里的值第一次取值,比如为flags[1]时,它是怎么判定为false出来的?还是说最初定义boolean[]flags数组时,就已经是false了,因为下面把取过值的数定义为ture了,会再次循环的。就是想知道此处如何判定为false出来的

chs[i] = letters[index];
flags[index] = true;
}
return chs;
}
最佳答案
问题一:
布尔也是基本数据类型,你可以像理解char、int一样理解它。
boolean[] flags = new boolean[letters.length];就是是定义一个boolean类型的数组,letters.length是数组长度,flags[0]到flags[letters.length-1]每个都是boolean类型的变量。它们只能存储布尔值,也就是true或者false,就跟char一样,给它们赋值的时候类型不对是会报错的。
此时数组只是定义了,还没有初始化。虽然它们都有默认值false,还是建议自己给个值,哪怕就是false。就像定义int类型一样,它们都有默认值0。
问题二:
参照问题一,你的困惑估计也就是没初始化给你造成的误解。它们有默认值false,写这个函数的偷懒了。你可以给手动初始化一下,虽然不会对结果有任何影响,但是别人容易看懂啊,就像你被蒙了吧,逻辑上也清晰一些。
全部回答
楼主,给你一个我自己写的答案,因为当时没网没资料复制那么多字母,急中生智想出的远古时期的编写方法. public static void main(String[] args) { } public static char[]cr(){ char[] cn=new char[5]; int x; boolean[] bl=new boolean[26]; for(int i=0;i
  • 2楼网友:我叫很个性
  • 2021-12-28 00:28
第一个问题:如你理解的一样,这就是一个boolean类型的数组,数组里存放的值全部都是false或者true,没有其他值,这个数组是作为后续循环的开关而存在的 第二个问题:boolean类型的默认值就是false 再看看别人怎么说的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯