-1

次のコードがあります:

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

で試してみると、からまでr[0]の文字しかありません(許可されていません)。実行すると、が含まれていることがあります。理由は何ですか?bh'a'r[0]'a'

4

3 に答える 3

3

「a」はASCII97であり、それを妨げているわけではありません。

'a'を選択して拒否するのではなく、最初に98('b')から104('h')までの値を選択してみませんか?

Random.nextInt(また、の代わりに、マジックナンバーの代わりMath.randomに文字リテラルを使用することをお勧めしますが...)

于 2012-04-19T11:13:51.300 に答える
0

キー

a= 97 //asCII

ただし、計算後も96キーの条件がある場合は、最後のキー値を検証していません。ASCII表を参照してください

于 2012-04-19T11:17:36.047 に答える
0

Math.random()が0.1249未満の値を返す場合に出力されます。次に、整数値が97になるため、「a」が出力されます。aのASCII値は97です。96だけではないかどうかを確認しています。

于 2012-04-19T11:19:28.590 に答える