2012-03-09 57 views
2

我正在用Strings构建一个猜谜游戏。这个概念很简单。我有一个由Java常量(C_Max_Trials = 10)定义的尝试次数有限,当猜测次数达到此常数时,应用程序应该退出。唯一的是我必须使用这个常数,这是我大学任务的一部分。变量等于Java中的常量

我的问题是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

一个名为Assignment4的类的帖子应该被标记为家庭作业。 – 2012-03-09 19:01:26

+0

你在这里略去了一些东西。你要离开什么? – 2012-03-09 19:01:26

回答

2

你从10

计数0计数--nrOfGuesses)高达nrOfGuesses++),以C_Max_TrialsC_Max_Trials代替倒计时硬编码10

1
public static final int C_Max_Trials = 10; 
//... 
--nrOfGuesses; 

您开始在10试验,并下降,所以它永远不会等于最大试验。尝试将最大试验设置为0或在0开始试验并使其升高。

3

如果nrOfGuesses开始 10,然后只得到递减...你怎么指望它会等于 10? (除非溢出...)

你需要决定是否nrOfGuesses,就是要:

  • 留下猜测的数量:在恒定启动它,它减小每一步,与比较0
  • 猜的次数:从0开始的,增加它,并随着不断
1

您的代码比较,似乎要到f当猜测次数达到最大猜测次数时,orce终止,但你在循环中开始10次猜测和递减。

1

您的代码不能编译。并且C_Max_Trials被初始化为10,而不是0.显然,它不会停在0。

1

你的逻辑是倒退的;你递减nrOfGuesses,然后将它与最大值相比较,你可以进行猜测。在这种情况下,您应该是递增nrOfGuesses或将其与0进行比较并将其设置为C_Max_Trials

如果我是你,我会选择增加nrOfGuesses并将其与C_Max_Trials,因为这使得nrOfGuesses持有的值有意义的名字(其持有猜的次数)。否则,你将持有剩余的与该变量的数量,然后它应该被重命名为guessesRemaining或类似的东西。

当然,如果您希望使用nrOfGuesses就像您在通知用户尝试了多少次尝试(正确猜测)的部分中所做的那样,那么每个循环都应该递增,而不是递减。