我希望使用类似
的随机信件char ch = 'A' + randomNumber ; // randomNumber is int from 0 to 25
但是这会导致“精度损失”编译错误(如果randomNumber只是一个字节,则相同)。 我猜对于Unicode,上面的内容过于简单了。
这有效,但看起来有点笨拙:
char ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt(randomNumber);
我该怎么做?
答案 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);