【发布时间】:2015-06-27 21:07:46
【问题描述】:
一个可行的例子是有一个 while 循环继续从用户那里获取一个数字,直到他们猜对了数字,然后它将返回 true 并退出 while 循环。
但是,如果我创建一个返回变量是真还是假的方法,则 while 循环不会终止。但是,如果 IF 条件在 while 循环内,它会终止并按预期工作。
按预期工作的代码:
private void print() { // Method name not decided yet
boolean playerGuessedCorrectly = false;
while(!playerGuessedCorrectly) {
[...] // Other code that asks the user to enter a new number
// userGuess is the next int entered by the user
// computerNumber is a random number between 1 and 100
if(userGuess == computerNumber) {
System.out.print("You have guessed my number.");
playerGuessedCorrectly = true;
} // while loop terminates upon true
}
}
此代码有效,当它更改为 true 时,while 循环停止工作。但是,当我将相同的代码放在一个方法中时,while 循环会继续循环并且不会终止:
不工作的代码:
private void print() {
boolean playerGuessedCorrectly = false;
while(!playerGuessedCorrectly) {
checkIfGuessIsMyNumber(playerGuessedCorrectly);
} // value of playerGuessedCorrectly is sent to method checkIfGuessIsMyNumber();
private boolean checkIfGuessIsMyNumber(boolean playerGuessedCorrectly) {
// userGuess is the next int entered by the user
// computerNumber is a random number between 1 and 100
if(userGuess == computerNumber) {
System.out.print("You have guessed my number.");
return playerGuessedCorrectly = true;
} else {
playerGuessedCorrectly = false;
}
}
为了澄清,当 IF userGuess == computerNumber 在 while 循环内时,while 循环终止,但是,当它被拆分为不同的方法并返回值时,它不起作用。
请注意,当我打印出方法给出的值时,它已打印出 true。所以我很困惑为什么当方法中的值为真时它不会终止,但它会在 while 循环内的 if 条件下终止。
【问题讨论】:
标签: java