我有下一个代码:
t= (int)(Math.random()*8+1)+96; //ascii table
if (t!= 96){
choose[(int)(t-97)] = 1;
r[0] = (char)t;}
}
我尝试在 中r[0]
,只有从b
to的字符h
('a'
不允许)。当我运行它时,我看到有时r[0]
包含'a'
. 可能是什么原因?
'a' 是ASCII 97,你并没有阻止它。
为什么不首先从 98 ('b') 到 104 ('h') 中选择一个值,而不是允许选择 'a' 然后拒绝它?
(我还建议使用Random.nextInt
代替Math.random
, 和字符文字而不是幻数,但是......)
如果 Math.random() 返回的值小于 0.1249,它将被打印出来。然后整数值变为 97,因此打印“a”。a 的 ASCII 值为 97。您正在检查它是否仅是 96。