2016-11-21 24 views
1

ランダムなサイズ(3〜20)のランダムな文字列を生成しようとすると、小さな問題が発生します。私はすべての文字が(小文字)からZ(大文字)までの配列arrを持っています。私はランダムな長さarrLengthを第2の配列arr2に生成します。ランダムに選択された文字がいくつか含まれています。ランダムな文字列を生成して1文字が欠けています

私の問題は、文字 'a'(小文字)がランダムに生成された文字列に現れないことです。間違いはforループ内にあるかもしれないと思いますが、これまで見たことがありませんでした。たぶんそれは(int)キャスティングまたはMath.floor丸めと関係がありますか?代わりに魔法の定数50使用arr.length

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

私はそれがMath.floorのあなたの+1だと思っています – DejaVuSansMono

答えて

5

(配列の50個の以上の文字がある注意してください)、それは最低の数はあなたが1を取得することができますし、配列のインデックスは0から始まりとして+1を除外Java。

+1

ありがとうございました!問題は、私がOctaveからこのコードを翻訳していて、配列インデックスが1から始まることです。完全に忘れました。 –

関連する問題