2016-11-08 134 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”。 –