2011-03-05 124 views

回答

23
Random r = new Random(); 
char c = (char) (r.nextInt(26) + 'a'); 
+0

对于其他字符范围,请参阅http://www.asciitable.com/,然后http://www.unicode.org/charts/ – 2011-03-05 11:03:39

+0

@Nishant,谢谢,更新。 – 2011-03-06 16:53:19

4

字母或更确切地说是字符是数字(扩展ascii为0到255,非扩展为0到127)。例如,在ASCII中,'A'(引用表示字符,而不是字符串)是65.所以1 +'A'会给你66''B'。 所以,你可以从0到26取一个随机数,把它加到字符'a',这里是:随机字母。

你也可以用一个字符串来输入“abcdefghijklmnopqrstuvwxyz”并在这个链中随机选择一个位置,但是Barker解决方案更加优雅。

+0

我认为“挑选给定字符串的随机字符”是更优雅的解决方案。 – 2011-03-05 09:38:33

+0

它更容易阅读,但你必须创建字符串:) – Raveline 2011-03-05 09:41:50

3

@迈克尔·巴克的ALTER版本

Random r = new Random(); 
    int c = r.nextInt(26) + (byte)'a'; 
    System.out.println((char)c); 
+0

为什么转换为'byte'? – aioobe 2016-12-11 00:02:10

0

使用字母的ASCII值来生成随机数。

0
Random r = new Random(); 
char symbel = (char)(r.nextInt(26) + 'a'); 
if(symbel>='a' && symbel <= 'z') { 
    System.out.println("Small Letter" + symbel); 
} else { 
    System.out.println("Not a letter" + symbel); 
} 
+1

为什么要检查char是否超出'a'-'z'范围?那永远不会发生。 – 2011-08-11 10:03:03

1
import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; 
... 
randomAlphabetic(1).toLowerCase() 

此为您提供了单个字符的字符串

2
char randomLetter = (char) ('a' + Math.random() * ('z'-'a' + 1)); 
0

要随机选择(A-Z)的信中我将做到以下几点:

Random rand = new Random(); 
... 
char c = rand.nextInt(26) + 'a'; 

由于Random.nextInt()生成一个从0到25的值,你只需要添加一个偏移量'a'生成小写字母。

相关问题