我想随机得到一封信
char ch = 'A' + randomNumber ; // randomNumber is int from 0 to 25
但这会导致“精度损失”编译错误(如果randomnumber只有一个字节,则相同)。我想对于unicode来说,上面的内容过于简单化了。这是可行的,但似乎有点笨拙:
char ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".charAt(randomNumber);
我该怎么做?
mwyxok5s1#
这个怎么样?难看的铸造,但没有编译错误。应生成随机大写字母:
int rand = (int) (Math.random() * 100); int i = 65 + (rand % 26); char c = (char) i; System.out.println(c);
rqenqsqc2#
char ch = (char) (new Random().nextInt('Z' - 'A' + 1) + 'A') 你可以用任何你想达到更大范围的字符来代替“a”和“z”。
char ch = (char) (new Random().nextInt('Z' - 'A' + 1) + 'A')
zkure5ic3#
问题是由于试图分配 int 变成一个 char .自从 int 是32位和 char 是16位,分配 int 可能导致精度损失,因此在编译时显示错误消息。
int
char
3df52oht4#
如果你知道你会在适当的范围内,就投:
char ch = (char) ('A' + randomNumber);
4条答案
按热度按时间mwyxok5s1#
这个怎么样?难看的铸造,但没有编译错误。应生成随机大写字母:
rqenqsqc2#
char ch = (char) (new Random().nextInt('Z' - 'A' + 1) + 'A')
你可以用任何你想达到更大范围的字符来代替“a”和“z”。zkure5ic3#
问题是由于试图分配
int
变成一个char
.自从
int
是32位和char
是16位,分配int
可能导致精度损失,因此在编译时显示错误消息。3df52oht4#
如果你知道你会在适当的范围内,就投: