使用循环来计算剩余的尝试次数

时间:2018-05-24 05:38:29

标签: java loops

我有这个名人猜谜游戏,用户必须猜测一个名人的名字,只给出名字中的一部分字母。 我给玩家“线索”(egrge oney)并阅读他们的猜测。该程序应该有一个循环,允许他们继续猜测。如果他们错误猜测了3次,给他们一个提示如果他们第四次猜错(在提示之后),他们将失去游戏(你应该告诉他们名人是谁)。

我遇到循环问题。这是我到目前为止所做的。

 System.out.println("Celebrity Guessing Game"); 
 String celeb = "John Lennon";

 System.out.print("Choose your difficulty (easy/medium/hard): ");
 String difficulty = input.nextLine();
 int maxtry = 3;
 if (difficulty.equals("easy"))
 {
     System.out.println("Here is your clue: " + celeb.substring(1, 4) + " " + celeb.substring(5,10));
    }
 else if (difficulty.equals("medium"))
 {
     System.out.println(("Here is your clue: " + celeb.substring(0, 3) + " " + celeb.substring(4,9)));
    }
 else if (difficulty.equals("hard"))
 {
     System.out.println(("Here is your clue: " + celeb.substring(2, 4) + " " + celeb.substring(5,7)));
    }


 System.out.print("What is your guess? ");
 String guess1 = input.nextLine();
 System.out.println("guess1 = " + guess1 + "   celeb = " + celeb );

 while (!guess1.equals(celeb) && maxtry == 3  ) {

    if (!guess1.equals(celeb) && maxtry == 3) {

    maxtry--; 
    System.out.println("Try Again." + " Number of guesses left : " + maxtry);
}     

   if   (guess1.equals(celeb) || guess1.equals("john lennon")) {
            System.out.println("Good Guess, you are correct!");
 }

这是我的输出:

名人猜猜游戏

选择你的难度(简单/中等/难度):轻松

这是你的线索:ohn Lenno

你的猜测是什么?约翰·列侬

guess1 =约翰·列侬名人=约翰·列侬

再试一次。剩下的猜测数量:2

好猜猜,你是对的!

^为什么它会通过两个if语句?

1 个答案:

答案 0 :(得分:0)

问题在于检查条件。它有以下问题:

  • 应该是maxtry > 0而不是maxtry == 3
  • 而不是equals()使用equalsIgnoreCase()

以下是更正后的代码段:

while (!guess1.equalsIgnoreCase(celeb) && maxtry > 0  ) {

    if (!guess1.equalsIgnoreCase(celeb) && maxtry > 0) {

        maxtry--; 
        System.out.println("Try Again." + " Number of guesses left : " + maxtry);
} 

注意:您没有从用户那里读取其他尝试的输入。