2

我想使用类似的东西得到一个随机的字母

char ch = 'A' + randomNumber ;  // randomNumber is int from 0 to 25 

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

这可行,但似乎有点笨拙:

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

我应该怎么做?

4

4 回答 4

6

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

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

于 2009-11-04T14:42:15.363 回答
1

问题是由于尝试将 a 分配给inta引起的char

由于 anint是 32 位和char16 位,分配 anint可能会导致精度损失,因此在编译时会显示错误消息。

于 2009-11-04T14:38:25.533 回答
1

如果你知道你将在适当的范围内,只需投射:

char ch = (char) ('A' + randomNumber);
于 2009-11-04T14:41:38.750 回答
0

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

int rand = (int) (Math.random() * 100);
int i = 65 + (rand % 26);
char c = (char) i;
System.out.println(c);
于 2009-11-04T14:52:24.857 回答