1

これは私のランダムな塗りつぶしコードで、ループに基づいており、「KELVIN」の後に4つのランダムな文字を生成する必要があります(KELVINは6文字を取るため)が、印刷すると2つのランダムな文字しか生成されません.

   Random r = new Random();
            //string imported  
            String word = "KELVIN";

            //loop for fill up 10 characters
            for (int i=0; i<10-word.length();i++)
            {
               char randomadd = (char)(r.nextInt(26) + 'A');
               word +=randomadd;
            }

        System.out.print(word+"==");

コンソール出力:

KELVINSN==
4

1 に答える 1

3

各ループで、単語の長さに影響します。その結果、単語の長さを 10 にするのに必要な文字の半分だけを追加することになります。

最初の反復。 iは 0 です。条件i < 10 - 6trueなので、ランダムな文字を追加します。

2 回目の繰り返し。 iは 1 ですが、語長は 7 になりました。i < 10 - 7trueであるため、2 番目のランダムな文字が追加されます。

iは 2 になりましたが、語長は 8 になりました。i < 10 - 8falseであるため、ループは終了します。

解決策は、必要な文字数を事前に決定することです。そのため、反復ごとに変更されません。

int charsNeeded = 10 - word.length();
for (int i = 0; i < charsNeeded; i++)
于 2013-09-06T17:18:29.610 に答える