2016-11-08 6 views
0

実際には、配列で3つのランダムな文字を12回生成できるクラスを作りたいと思っています。私はcharの代わりにintを要求するランダムな問題を抱えています。手伝ってくれてありがとう! :)3つの特定の文字は配列からランダムに生成されます

+4

「問題がある」とすれば、うまくいかないコードがあることを示唆しています。そのコードを表示して、うまくいきません。 –

+0

「charの代わりにintをランダムに要求する」とはどういう意味ですか? –

答えて

2

まず、すべての有効な文字を含むアルファベットを定義する必要があります。そして、あなたのコードは次のようになります。

ここ
public char generateRandomLetterFromAlphabet(String alphabet) { 
    Random random = new Random(); 
    return alphabet.charAt(random.nextInt(alphabet.length())); 
} 

ので、あなたのアルファベットのランダム文字がgenerateRandomLetterFromAlphabetによって返され、ゼロの間ランダムインデックスとアルファベットの文字列の長さを返しますnextInt(alphabet.length())Randomは、疑似ランダムの番号を生成することに注意してください。

もちろん、アルファベットは配列でも定義できます。ここでは、文字列としてアルファベットからランダムな文字の指定された数を生成する機能を持っている:

public char[] generateRandomLettersFromAlphabet(char[] alphabet, 
     int numberOfLetters) { 

    if (numberOfLetters < 1) { 
     throw new IllegalArgumentException(
       "Number of letters must be strictly positive."); 
    } 

    Random random = new Random(); 
    char[] randomLetters = new char[numberOfLetters]; 

    for (int i = 0; i < numberOfLetters; i++) { 
     randomLetters[i] = alphabet[random.nextInt(alphabet.length)]; 
    } 

    return randomLetters; 

} 
+0

私の答えは 'char'配列の一般的な例で更新しました。 – thatguy

+0

コードポイントの全部に50442文字が散在しているので、アルファベットは素晴らしい考えです。 –

0

あなたが特派炭にランダムな整数を変換するASCIIコードを使用することができます。 asciiの詳細:http://www.ascii-code.com/

この簡単な方法は、65(大文字A)と90(大文字Z)の間のランダムな整数に基づいてcharを出力します。

public char randomChar(){ 
    Random r = new Random(); 
    int num = r.nextInt(26) + 65; 
    return (char) num; 
} 

これで、この方法を自分の目的に合わせて調整することができます。

+0

'char'はASCIIコード単位ではなく、UTF-16コード単位です。 (UTF-16はUnicode文字セットのエンコーディングです。)65は実際にコードポイント[UTF-16]のUTF-16コード単位です(http://www.fileformat.info/info/unicode/char/ 0041/index.htm)、より簡単に「A」と理解されます。 –

関連する問題