如果我要随机选择一个与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