-1

我有下一个代码:

        t= (int)(Math.random()*8+1)+96; //ascii table
        if (t!= 96){
                choose[(int)(t-97)] = 1;
                r[0] = (char)t;}
    }

我尝试在 中r[0],只有从bto的字符h'a'不允许)。当我运行它时,我看到有时r[0]包含'a'. 可能是什么原因?

4

3 回答 3

3

'a' 是ASCII 97,你并没有阻止它。

为什么不首先从 98 ('b') 到 104 ('h') 中选择一个值,而不是允许选择 'a' 然后拒绝它?

(我还建议使用Random.nextInt代替Math.random, 和字符文字而不是幻数,但是......)

于 2012-04-19T11:13:51.300 回答
0

钥匙

a= 97 //asCII

但是您在计算后也有 96 键的 if 条件,您没有验证最后一个键值。见ASCII 表

于 2012-04-19T11:17:36.047 回答
0

如果 Math.random() 返回的值小于 0.1249,它将被打印出来。然后整数值变为 97,因此打印“a”。a 的 ASCII 值为 97。您正在检查它是否仅是 96。

于 2012-04-19T11:19:28.590 回答