Java循环不执行时

时间:2014-07-19 00:49:20

标签: java random while-loop char

我正在尝试构建一个简单的程序,我的程序的第一部分将无法正常工作。

有人可以检查我的代码并告诉我为什么while循环不会执行并生成一个正确的随机数?

提前谢谢。

2 个答案:

答案 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的优化并非绝对必要,因为在重要时它将在封面下使用。