变量等于Java中的常量

时间:2012-03-09 18:58:41

标签: java

我正在用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:");

      }
  }
}

6 个答案:

答案 0 :(得分:3)

如果nrOfGuesses 在10开始,然后才会减少...你怎么预期它等于为10? (除非溢出......)

您需要决定是否nrOfGuesses

  • 猜测次数:在常量处开始,在每一步减少它,并与0比较
  • 拥有的猜测次数:从0开始,递增,并与常量进行比较

答案 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>