昨天我读到了Java中用于for循环的逗号运算符。这符合我的预期。我想到了这种结构,但它没有按预期工作。
';' expected
} while((userInput < 1 || userInput > 3), wrongInput = true);
';' expected
} while((userInput < 1 || userInput > 3), wrongInput = true);
我的想法是,在一次迭代后,如果userInput
不在 1 到 3 之间,它应该将布尔wrongInput
设置为 true
,以便在下一次迭代期间显示错误消息。表示userInput
无效。
private int askUserToSelectDifficulty() {
int userInput;
Boolean wrongInput = false;
do{
if(wrongInput) println("nt Wrong input: possible selection 1, 2 or 3");
userInput = readInt();
} while((userInput < 1 || userInput > 3), wrongInput = true);
return userInput;
}
我想这可能是因为这在相当于 for 循环的条件部分内部,所以这是无效的语法。因为你不能在条件部分使用逗号运算符?
我看到逗号运算符在 for 循环中使用的示例:在 Java 中的 for 循环中给出多个条件Java - 用于循环声明的逗号运算符
展开一下。
userInput = readInt();
while (userInput < 1 || userInput > 3) {
System.out.println("ntWrong input: possible selection 1, 2 or 3");
userInput = readInt();
}
这避免了对标志的需求。
Java 中没有逗号运算符(反正不是 C/C++ 意义上的逗号运算符)。在某些上下文中,您可以使用逗号一次声明和初始化多个内容,但这并不能推广到其他上下文,例如示例中的上下文。
表达循环的一种方式是这样的:
while (true) {
userInput = readInt();
if (userInput >= 1 && userInput <= 3) {
break;
}
println("nt Wrong input: possible selection 1, 2 or 3");
};