生成随机的字母
char ch = (char)( Math.random() * 26 + 'A' );ch += (int)( Math.random() * 2 ) * ( 'a' - 'A' );
这两句能生成随机的字母,看不懂,求解 第一个:
Math.random() 的返回值是[0,1)的随机数,*26后其范围为[0~26) 左闭右开区间
'B'的ASCII码值比'A'的ASCII的值大1,
'Z'的ASCII码值比'A'的ASCII的值大25.
'A'+[0,26) = ['A','Z'+1)
取不到'Z'+1,上限值只能取到'Z'
所以char ch = (char)( Math.random() * 26 + 'A' );
执行完毕后
ch 可以取到 'A'~'Z'
第二个略,需要查一下ASCII码表。
由于ascii码中,大写字母排在小写字母前面,中间还隔了一些其他字符
这两行代码是先生成一个大写字符,再随机判断生成该字母的大写形式或者小写形式,Math.random()*2无非就是0或1,0就是大写,1就是小写(就是加上了中间隔的字符的数量,得到对应小写字母的ascii码) 两张图解决你的困惑
页:
[1]