我正在尝试构建一个简单的程序,我的程序的第一部分将无法正常工作。
有人可以检查我的代码并告诉我为什么while循环不会执行并生成一个正确的随机数?
提前谢谢。
答案 0 :(得分:2)
如果我理解您的代码和问题,您需要类似
的内容int choice = 1;
int length = 8;
StringBuilder sb = new StringBuilder();
Random rand = new Random();
if(choice == 1) {
//Lowercase Letters
for(int i = 0; i < length; i++) {
// from 'a' to ('z' - 'a')
int randNumLower = 'a' + rand.nextInt('z'-'a');
sb.append((char) randNumLower);
}
}
System.out.println(sb.toString());
这里输出一串随机小写字母。
答案 1 :(得分:1)
你可能是这个意思:
while ((num < 97) || (num > 122)) {
num = randNumList.nextInt(122)+1;
}
长度为5的三个输出:
ordfg
idlxw
ugznu
您的情况应为||
(或)&&
(和)。 randNumLower
不能低于97 和高于122,它必须是一个或另一个(或中间)。
要使用令人困惑的否定,您需要:
(!(num >= 97) || !(num <= 122))
就我而言,这更难以阅读。
更好的是,跳过所有这些,只使用正确的范围:
num = randNumList.nextInt('z' - 'a') + 'a';
请注意,使用显式StringBuilder
的优化并非绝对必要,因为在重要时它将在封面下使用。