2016-11-08 128 views
0

我真的想做一個類,可以產生12個隨機數字3個隨機字母。我在隨機請求int而不是char時遇到了一些麻煩。感謝幫助! :)從數組中隨機生成三個特定的字母

+4

誠勿擾「有一些麻煩,」那意味着你有一些代碼,完全不是那麼回事 - 所以請表明代碼,並給出什麼不工作細節。 –

+0

「隨機請求int而不是char」是什麼意思? –

回答

2

首先,你需要定義一個字母,它包含了所有有效字符。然後你的代碼可以是這樣的:

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

這裏,nextInt(alphabet.length())返回和零之間的隨機指數字母串的長度,所以你的字母表中的隨機字符被generateRandomLetterFromAlphabet返回。請注意,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)之間的隨機整數炭。

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

現在你可以調整這個方法來達到你自己的目的。

+0

'char'是一個UTF-16編碼單元,不是ASCII碼單元。 (UTF-16是Unicode字符集的編碼。)65的確是代碼點[Latin Capital Letter A]的一個UTF-16代碼單元(http://www.fileformat.info/info/unicode/char/ 0041/index.htm),但它更容易理解爲「A」。 –