【发布时间】:2017-11-08 12:28:15
【问题描述】:
我正在制作一个用户猜颜色的刽子手游戏。我想要发生的是:如果用户错误地得到超过 5 个,(经历了所有 5 个提示),它将表明用户丢失了。在 while 循环结束后(这个词是正确的或通过了所有 5 个提示),它应该告诉你你是否赢了。 这是执行此操作的代码部分:
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String color = getColor();
String result = EmptyStr(color);
String[] hints = getHints(color);
System.out.println("Please enter a letter:");
char letter = in.next().charAt(0);
//-----------------------------------------------------------
int wrong = 0;
while (wrong<6){
if (checkLetter(color, letter)){
// result was previously defined elsewhere so don't worry about it
result = Result(color, result, letter);
System.out.println("Correct guess! here is your word so far: " + result);
System.out.println("Lifelines left: " + (5 - wrong));
if (result.equals(color)){
System.out.println("congratulations! You Won!");
break;
}
}
else{
wrong ++;
System.out.println(hints[0]);
System.out.println("Lifelines left: " + (5 - wrong));
}
}
// also not sure what to put here after player wins or loses: System.out.println("Sorry! You lost! The correct word was: " + color);
}
但是,一旦我输入了一个字母,并且它是正确的,
result = Result(color, result, letter);
System.out.println("Correct guess! here is your word so far: " + result);
System.out.println("Lifelines left: " + (5 - wrong));
永远重复。我想知道:为什么它会永远重复?还有,我该如何修复它才能正常工作?
【问题讨论】:
-
假设
checkLetter返回true它只会在result等于color时返回break- 如果不是,它将循环 -
@ScaryWombat 但我什至无法重新输入另一个字符来检查它是否是颜色中的字符
-
在这种情况下,您需要整理出您的逻辑。也许您想将
char letter = in.next().charAt(0);移动到您的循环中 -
@ScaryWombat 是的,我在移动它之后才意识到!谢谢你告诉我! :)
标签: java while-loop java.util.scanner