2017-05-30 49 views
0

我是一名学生,目前正在使用java,我很难编程高和低猜谜游戏。我不能使用循环或“while”代码。有什么想法吗?这是我现在所拥有的:高或低游戏没有循环或“while”代码

public class FinalProject1 

{ 

    public static void main(String [] args) 

    { 

     System.out.println("Number Guessing Game 1-1000\nGuess a number"); 
     guess(); 
    } 

    public static int random() 

    { 
     int x = (int)(1000*Math.random() + 1); 
     return x; 
    } 

    public static void guess() 

    { 

     int num = random(); 
     int tries = 0; 
     Scanner keyboard = new Scanner(System.in); 
     String inputString = keyboard.nextLine(); 
     int input = Integer.parseInt(inputString); 

     if (input > num) 

     { 
      System.out.println("Guess a higher number"); 
      inputString = keyboard.nextLine(); 
     } 

     else if (input < num) 

     { 
      System.out.println("Guess a lower number"); 
      inputString = keyboard.nextLine(); 
     } 

     else if (num == input) 

     { 
      System.out.println("You Win"); 

    } 

} 

} 
+11

如果你不理解递归从一开始读这句话。 –

+3

@ElliottFrisch并单击[这里](https://stackoverflow.com/questions/44267747/high-or-low-game-without-looping-or-while-code)了解更多:) –

回答

-1

首先,你的逻辑是有缺陷的。如果input > num那么用户猜测得太高,并且需要猜测较低的号码。

其他人建议使用递归,这是您的问题的常见解决方案,并可能是你需要做的,因为你可能刚刚了解了递归。

但是,因为我喜欢相反,我会通过启动一个新的线程,这样做:

public class FinalProject1 implements Runnable { 
    private Scanner keyboard = new Scanner(System.in); 
    private int num = random(); 

    public static void main(String[] args) { 
     System.out.println("Number Guessing Game 1-1000\nGuess a number"); 
     new Thread(new FinalProject1()).start(); 
    } 

    public static int random() { 
     return (int) (1000 * Math.random() + 1); 
    } 

    @Override 
    public void run() { 
     String inputString = this.keyboard.nextLine(); 
     int input = Integer.parseInt(inputString); 

     if (input > this.num) { 
      System.out.println("Guess a lower number"); 
      new Thread(this).start(); 
     } else if (input < this.num) { 
      System.out.println("Guess a higher number"); 
      new Thread(this).start(); 
     } else if (this.num == input) { 
      System.out.println("You Win"); 
     } 
    } 
} 
-1

有几件事情..

  1. 你> & <检查对于更高和更低的是向后
  2. 你需要使用递归来产生你的预期行为没有任何循环。

    public static void main(String [] args) 
    { 
    
        System.out.println("Number Guessing Game 1-1000\nGuess a number"); 
        int num = random(); 
        Scanner keyboard = new Scanner(System.in); 
    
        guess(keyboard, num); 
    } 
    
    public static int random() 
    { 
        int x = (int)(1000*Math.random() + 1); 
        return x; 
    } 
    
    public static void guess(Scanner keyboard, int goal) 
    { 
        String inputString = keyboard.nextLine(); 
        int input = Integer.parseInt(inputString); 
    
        if (input < goal) 
        { 
         System.out.println("Guess a higher number"); 
         guess(keyboard, goal); 
        } 
    
        else if (input > goal) 
        { 
         System.out.println("Guess a lower number"); 
         guess(keyboard, goal); 
        } 
    
        else if (input == goal) 
        { 
         System.out.println("You Win"); 
        } 
    } 
    

基本上发生的事情是,我们得到他们的响应,并检查它是否>或<结果,告诉他们,并立即再次调用guess()方法,以便直到他们得到重复这个过程对的。

缠绕递归你的头可以是相当困难的一开始,就一直练习

+0

做出所有更改你建议并改变了一些东西。非常感谢您的帮助。 –

+0

没问题! :D随意+1 – Headline