如果我要隨機選擇一個與Z之間的信,我想我必須使用Random
類:在Java中,你如何隨機選擇一個字母(a-z)?
Random rand = new Random();
但由於這僅生成編號,什麼做我需要做的這個申請信?
如果我要隨機選擇一個與Z之間的信,我想我必須使用Random
類:在Java中,你如何隨機選擇一個字母(a-z)?
Random rand = new Random();
但由於這僅生成編號,什麼做我需要做的這個申請信?
Random r = new Random();
char c = (char) (r.nextInt(26) + 'a');
字母或更確切地說是字符是數字(擴展ascii爲0到255,非擴展爲0到127)。例如,在ASCII中,'A'(引用表示字符,而不是字符串)是65.所以1 +'A'會給你66''B'。 所以,你可以從0到26取一個隨機數,把它加到字符'a',這裏是:隨機字母。
你也可以用一個字符串來輸入「abcdefghijklmnopqrstuvwxyz」並在這個鏈中隨機選擇一個位置,但是Barker解決方案更加優雅。
我認爲「挑選給定字符串的隨機字符」是更優雅的解決方案。 – 2011-03-05 09:38:33
它更容易閱讀,但你必須創建字符串:) – Raveline 2011-03-05 09:41:50
@邁克爾·巴克的ALTER版本
Random r = new Random();
int c = r.nextInt(26) + (byte)'a';
System.out.println((char)c);
爲什麼轉換爲'byte'? – aioobe 2016-12-11 00:02:10
使用字母的ASCII值來生成隨機數。
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);
}
爲什麼要檢查char是否超出'a'-'z'範圍?那永遠不會發生。 – 2011-08-11 10:03:03
import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
...
randomAlphabetic(1).toLowerCase()
此爲您提供了單個字符的字符串
char randomLetter = (char) ('a' + Math.random() * ('z'-'a' + 1));
要隨機選擇(A-Z)的信中我將做到以下幾點:
Random rand = new Random();
...
char c = rand.nextInt(26) + 'a';
由於Random.nextInt()生成一個從0到25的值,你只需要添加一個偏移量'a'生成小寫字母。
對於其他字符範圍,請參閱http://www.asciitable.com/,然後http://www.unicode.org/charts/ – 2011-03-05 11:03:39
@Nishant,謝謝,更新。 – 2011-03-06 16:53:19