我正在用Strings构建一个猜谜游戏。这个概念非常简单。我有一个由Java常量(C_Max_Trials = 10)定义的有限数量的尝试,当猜测数达到此常量时,应该退出应用程序。唯一的问题是我必须使用这个常数,这是我大学任务的一部分。
我的问题是Java不会考虑我的陈述:
if (nrOfGuesses == C_Max_Trials) {
System.out.println("Sorry you are out of tries");
System.exit(0);"
如果我把
nrOfGuesses == 0
它会正常工作。如果我让
nrOfGuesses == C_Max_Trials
然后它不会在10个猜测停止,它将继续猜测没有-1,-2,-3 ....继续循环。
我在下面附上我的代码。此外,如果您对代码有任何其他反馈,将不胜感激。我刚开始编码。
谢谢!
我的代码是:
public class Assignment4 {
public static final int C_Max_Trials = 10;
//Start Game
String correctName = "X";
boolean finished = false;
int nrOfGuesses=10;
while (!finished) {
Scanner keyboard = new Scanner(System.in);
System.out.print("Please guess the name: ");
String name = keyboard.nextLine();
if (name.equals(correctName))
{
finished = true;
System.out.println("Congratulations! You have guessed the name in "
+ nrOfGuesses+ " tries!");
System.exit(0);
}
--nrOfGuesses;
if (nrOfGuesses == C_Max_Trials) {
System.out.println("Sorry you are out of tries");
System.exit(0);
}
System.out.println("Sorry, you haven't guessed the name. You have "+
nrOfGuesses + " left. Please try again:");
}
}
}
答案 0 :(得分:3)
如果nrOfGuesses
在10开始,然后才会减少...你怎么预期它等于为10? (除非溢出......)
您需要决定是否nrOfGuesses
:
答案 1 :(得分:2)
你从10开始计算 down (--nrOfGuesses
)。
将向上(nrOfGuesses++
)从0
计算到C_Max_Trials
,或从C_Max_Trials
开始倒数,而不是从硬编码的10
开始倒计时。
答案 2 :(得分:1)
public static final int C_Max_Trials = 10;
//...
--nrOfGuesses;
你在10点开始试验并且下降,所以它永远不会等于最大试验。尝试将最大试验设置为0或从0开始试验并使其上升。
答案 3 :(得分:1)
当猜测次数达到最大猜测次数时,您的代码似乎想要强制终止,但是从循环中开始10次猜测并减少。
答案 4 :(得分:1)
您的代码无法编译。 C_Max_Trials
初始化为10,而不是0.很明显,它不会停在0。
答案 5 :(得分:1)
你的逻辑是倒退的;您递减 nrOfGuesses
,然后将其与您允许的最大猜测量进行比较。在这种情况下,您应该递增 nrOfGuesses
或将其与零进行比较并在开始时将其设置为C_Max_Trials
。
如果我是你,我会选择增加nrOfGuesses
并将其与C_Max_Trials
进行比较,因为这会使nrOfGuesses
保持一个对其名称有意义的值(它保留猜测数量)。否则,您将使用该变量保留剩余的猜测次数,然后将其重命名为guessesRemaining
或类似的内容。
当然,如果您希望在通知用户他正确猜测的尝试次数的部分中使用nrOfGuesses
,那么它应该在每个循环中递增,而不是递减。< / p>