编译器要么跳过 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()
。
我正在尝试在 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()
。