编译器要么跳过 for 循环,要么不在内部 运行 代码 (Java)

Compiler either skips for loop or does not run code inside (Java)

我正在尝试在 Java 中编写一个代码来获取一个单词并对其进行打乱。我有一个 for 循环来遍历单词:

        String inWord = getWord.nextLine();

        //loop as many times as x < length of word
        for(int x = 0; x >= inWord.length(); x++){

            //random number between 0 and length of word - 1
            int randomChar = randChar.nextInt(inWord.length() - 1);

            out.print("in the first for loop, randomChar is equal to " + randomChar + ", and x is equal to " + x);

循环继续执行一些其他不相关的代码,然后关闭。但是,当 运行 时,控制台只接受一个单词作为输入,然后终止程序。没有打印任何内容。我的 for 循环有问题吗?

你切换了循环条件,应该是:

for (int x = 0; x < inWord.length(); x++) {

注意循环的第二部分,这里x < inWord.length()的条件,当循环应该运行,而不是循环何时中断。循环 运行s 只要条件是 true.


此外,

int randomChar = randChar.nextInt(inWord.length() - 1);

应该是:

int randomChar = randChar.nextInt(inWord.length());

否则你将没有机会返回字符串中的最后一个字符。

Random.nextInt(int bound) 文档说:

Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)

是的,你的运算符反了,用<.

您在 for 循环的第一部分将 x 初始化为 0,然后在您的条件中,您检查它是否大于或等于字长 (x >= inWord.length()).由于几乎从未满足该条件(即单词的长度必须为 0,这几乎永远不会发生),因此不会进入循环。您可能指的是 x < inWord.length()