如何在Java中随机写一封信?

时间:2009-11-04 14:35:11

标签: java random character offset

我希望使用类似

的随机信件
char ch = 'A' + randomNumber ;  // randomNumber is int from 0 to 25 

但是这会导致“精度损失”编译错误(如果randomNumber只是一个字节,则相同)。 我猜对于Unicode,上面的内容过于简单了。

这有效,但看起来有点笨拙:

char ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt(randomNumber);

我该怎么做?

4 个答案:

答案 0 :(得分:6)

char ch = (char) (new Random().nextInt('Z' - 'A' + 1) + 'A')

您可以将“A”和“Z”替换为您希望获得更广范围的任何字符。

答案 1 :(得分:1)

问题是因为尝试将int分配到char

由于int为32位且char为16位,因此分配int可能会导致精度损失,因此在编译时会显示错误消息

答案 2 :(得分:1)

如果您知道自己将处于适当的范围内,只需投射:

char ch = (char) ('A' + randomNumber);

答案 3 :(得分:0)

这个怎么样?丑陋的投射,但没有编译错误。应该生成随机大写字母:

int rand = (int) (Math.random() * 100);
int i = 65 + (rand % 26);
char c = (char) i;
System.out.println(c);