猜猜游戏不能正常运作。我无法找到的错误

时间:2016-01-19 03:25:49

标签: java debugging random

所以我创建了一个猜谜游戏,其中用户有三个猜测,并且必须猜测随机生成的数字。我想我已经掌控了所有这些,但有一个我无法找到并修复它的错误。当用户猜出正确的号码时,它应该说"你赢了!",但我的程序没有这样做。需要帮忙。

import java.util.Scanner;

公共类猜测{

public static void main(String[] args) {

Scanner firstG = new Scanner(System.in);
Scanner secondG = new Scanner(System.in);
Scanner thirdG = new Scanner(System.in);

int randomN = (int)(Math.random() * 10) +1;


System.out.println("I'm thinking of an integer in the range 1 to 10. You have three guess.");
System.out.println();

System.out.print("Enter your first guess: ");
  int guess1 = firstG.nextInt();

  if(guess1 > randomN) {
      System.out.println("Too high!");
      if(guess1 > randomN) {
          System.out.println();
          System.out.print("Enter your second guess: ");
          int guess2 = secondG.nextInt();
          if (guess2 > randomN) {
              System.out.println("Too high!");
              if (guess2 > randomN) {
                  System.out.println();
                  System.out.print("Enter your third guess: ");
                  int guess3 = thirdG.nextInt();
                  if (guess3 > randomN) {
                      System.out.println("Too high!");
                      System.out.println();
                      System.out.println("You lose. The was " + randomN);
                      if(guess1 == randomN) {
                          System.out.println("You win!");
                          if(guess2 == randomN) {
                              System.out.println("You win!");
                              if(guess3 == randomN) {
                                  System.out.println("You win!");
                              }
                          }
                     }
                }
            }
        }
    }
}

       if(guess1 < randomN) {
       System.out.println("Toolow!");
       if(guess1 < randomN) {
           System.out.println();
           System.out.print("Enter your second guess: ");
           int guess2 = secondG.nextInt();
           if(guess2 < randomN) {
               System.out.println("Too low!");
               if (guess2 < randomN) {
                   System.out.println();
                   System.out.print("Enter your third guess: ");
                   int guess3 = thirdG.nextInt();
                   if(guess3 < randomN) {
                       System.out.println("Too low");
                       System.out.println();
                       System.out.println("You lose. The number was " + randomN);
                       if(guess1 == randomN) {
                           System.out.println("You win!");
                           if(guess2 == randomN) {
                               System.out.println("You win!");
                               if(guess3 == randomN) {
                               }
                            }
                         }
                      }
                   }
               }
           }
       }
    }
 }

3 个答案:

答案 0 :(得分:1)

我在你的代码中看到了很多问题。

首先,您不需要三个扫描仪

Scanner firstG = new Scanner(System.in);
Scanner secondG = new Scanner(System.in);
Scanner thirdG = new Scanner(System.in);

你只需要一个。这可能是您没有正确输出的原因。

你需要调试你的程序,从你提供的代码我会假设你真的是新手,所以这里有一篇关于如何使用eclipse IDE调试Java程序的好文章。 http://www.vogella.com/tutorials/EclipseDebugging/article.html

此外,如果条件过于严格且完全不必要,请尝试了解如何简化它们。一个好主意是获得一个笔记本,看看你如何在现实生活中处理这些问题。你会发现你所粘贴的东西的一半以上是不必要的。

答案 1 :(得分:1)

你应该把它写成一个循环。

但是你的实际问题是if(guess1 == randomN)语句里面是 if(guess1 > randomN)语句。

guess1不能同时为>==randomN,因此内部if语句永远不会成立。

答案 2 :(得分:0)

对我来说,它看起来应该是这样的

Scanner guess=new scanner(System.in);
int randomN = (int)(Math.random() * 10) +1;
for(int i=1;i<=3;i++)
 {
   int userNum=guess.nextInt();
   if(userNum>randomN)
        System.out.println("Too high!");
   else if(userNum<randomN)
           System.out.println("Too low!");
   else if(userNum==randomN)
   {
           System.out.println("You Win!");
           break;
    }
  }