尝试生成随机大小(3到20之间)的随机字符串时,我遇到了一个小问题。我有一个数组arr
,其中包含从(小写)到Z(大写)的所有字符。然后,我为第二个数组arrLength
生成一个随机长度arr2
,其中包含一些随机选择的字符。
我的问题是字母“a”(小写)从未出现在我随机生成的字符串中。我认为错误可能在for
循环中,但到目前为止我没有看到它。也许它与(int)
投射或Math.floor
四舍五入有关?
char[] arr = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
int arrLength = (int) (Math.floor((Math.random() * ((17 - 3) + 1)) + 3));
char[] arr2 = new char[arrLength];
String str = "";
for(int i=0;i<arrLength;i++) {
char num = arr[(int) (Math.floor(Math.random() * (50) + 1))];
arr2[i] = num;
}
答案 0 :(得分:5)
而不是魔术常量50
使用arr.length
(注意数组中有超过50个字符)并省略+1
,因为它是您可以获得的最低数字1,数组索引在Java中从0开始。