我想使用类似的东西得到一个随机的字母
char ch = 'A' + randomNumber ; // randomNumber is int from 0 to 25
但这会产生“精度损失”编译错误(如果 randomNumber 只是一个字节,则相同)。我想对于 Unicode,上面的内容过于简单化了。
这可行,但似乎有点笨拙:
char ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt(randomNumber);
我应该怎么做?
char ch = (char) (new Random().nextInt('Z' - 'A' + 1) + 'A')
您可以将“A”和“Z”替换为您想要获得更广泛范围的任何字符。
问题是由于尝试将 a 分配给inta引起的char。
由于 anint是 32 位和char16 位,分配 anint可能会导致精度损失,因此在编译时会显示错误消息。
如果你知道你将在适当的范围内,只需投射:
char ch = (char) ('A' + randomNumber);
这个怎么样?丑陋的转换,但没有编译错误。应该生成一个随机的大写字母:
int rand = (int) (Math.random() * 100);
int i = 65 + (rand % 26);
char c = (char) i;
System.out.println(c);