2017-05-30 2 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

関連する問題