在Java中你如何随机选择一个字母(az)?

如果我想在a和z之间随机选择一个字母,我假设我必须使用Random类:

 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解决方案更优雅。

改变@Michael Barker的版本

  Random r = new Random(); int c = r.nextInt(26) + (byte)'a'; System.out.println((char)c); 
 char randomLetter = (char) ('a' + Math.random() * ('z'-'a' + 1)); 
 import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; ... randomAlphabetic(1).toLowerCase() 

这给你一个单字符串

使用字母的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); } 

要从(a-z)中随机选择一个字母,我会执行以下操作:

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

由于Random.nextInt()生成0到25之间的值,因此只需添加“a”的偏移量即可生成小写字母。