2011-03-05 119 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'生成小寫字母。

相關問題