2016-05-11 5 views
-1
import java.util.Random; 
import java.util.Scanner; 
import java.util.InputMismatchException; 

public class GuessingGame { 

    public static void main(String[]args) throws BadGuessException 
    { 
     int min = 1; 
     int max = 10; 
     Random rand = new Random(); 

     int numberToGuess = rand.nextInt((max - min) + 1) + min;  

     Scanner input = new Scanner(System.in); 
     int guess; 
     boolean win = false; 
     int numberOfTries = 0; 

     while (!win) 
     { 

      System.out.println("Guess a number between 1 and 10: "); 
      try 
      { 
       guess = input.nextInt(); 
       numberOfTries++; 

       win=true; 

       if (guess == numberToGuess) 
       {  
        win = true; 
        System.out.println("YOU GOT IT!"); 
        System.out.println("It took you " + numberOfTries + " tires."); 

       } 
       else 
       { 
        throw new BadGuessException(); 
       } 
      } 
      catch(InputMismatchException e) 
      { 
       System.out.println("Please input a number betwee 1 and 10!"); 
      } 
      catch(BadGuessException ex) { 
       System.out.println("Sorry, you guessed the wrong number!"); 
      } 
     } 
    } 
} 
class BadGuessException extends Exception { 

    private static final String message = "Sorry, that was an invalid guess!"; 

    public BadGuessException() { 
     super(message); 
    } 
} 

プロンプトである: ジャワguessingGameエラー

BadGuessException

呼ばれる例外クラスを作成BadGuessExceptionが [1点]例外クラスのサブクラスでなければならない2つのコンストラクタ[1点] Aを作成BadGuessExceptionクラスのデフォルトのコンストラクタで、 "Sorry、that was invalid guess!"というメッセージを渡します。キーワードsuperを使用して親コンストラクタに渡します。 BadGuessExceptionクラスのパラメーター化されたコンストラクターで、キーワードsuperを使用して親コンストラクターにパラメーターを渡します。 GuessingGameと呼ばれるクラスを作成します。

1から10までの乱数を生成します。 ユーザーに番号を推測するように要求します。ユーザーが番号を正しく推測しようとする無制限の試行を許可します。 [1ポイント] ユーザーが数字を正しく推測したら、「あなたが手に入れました!ユーザーが数字を推測するのに何回試行したかを印刷します。 [1 point] try-catchブロックを使用して、コードに例外処理を追加します。ユーザーがいないユーザーが不正な形式を入力した場合スローされた例外をキャッチするために別のcatchブロックを追加 [ポイント1] 1と10の間にある任意の数値を入力した場合 try-catchブロックの適切な構文[1点】 BadGuessExceptionを投げます"5"や "5.0"のように、彼らが推測した数である。これにより、プログラムがクラッシュしたり、実行時間を浪費するのを防ぐことができます。この例外がキャッチされると、プログラムはクラッシュしてはならず、「申し訳ありません、無効な数値形式を入力しました」と表示されるはずです。 [1点]

は、今私は、コードを実行しているが、それは場合、コンパイラでループを実行し続けます。

+0

最初のデバッガを使用しようと、あなたはどこで、どのような問題が発生しているのより完全な説明をあなたの記事を更新することができればしてください、それは助けるだろう。 –

+0

私がこのコードで抱えているエラーは、このセクションのためのものです。ユーザが推測した数の間違ったフォーマット(「5」や「5.0」など)を入力すると、スローされた例外を捕捉する別のcatchブロックを追加します。これにより、プログラムがクラッシュしたり、実行時間を浪費するのを防ぐことができます。この例外がキャッチされると、プログラムはクラッシュしてはならず、「無効な数値書式を入力しました」と表示されるはずです – jaegers1234

+0

そして、私がコードを実行するときに無効な応答を入力または入力すると、 10: 1〜10の数字を入力してください!私はそれが私にこのメッセージを与える必要があり、無効なタイプを入力してくださいたび – jaegers1234

答えて

-1

パブリッククラスGuessingGame {

private static Scanner input; 

public static void main(String[] args) 
{ 
    Random rand = new Random(); 
    int numbertoguess = rand.nextInt(10); 
    int numberoftries =0; 
    input = new Scanner(System.in); 
    int guess; 
    boolean win = false; 

    while(win == false) 
    { 
     System.out.println("Guess a number between 1 and 10"); 
     try 
     { 
     guess = Integer.parseInt(input.next()); 
     numberoftries++; 

     if (guess == numbertoguess) 
     {  
      win = true; 
      System.out.println("That is correct !!"); 
      System.out.println("The number is : " + numbertoguess + " and it took you " + numberoftries + " tries"); 

     } 
     else 
     { 
      throw new BadGuessException(); 
     } 
    } 
    catch(NumberFormatException e) 
    { 
     System.out.println("Sorry, you entered an invalid number Format!"); 
    } 
    catch(BadGuessException ex) 
    { 
     System.out.println("Sorry, you guessed the wrong number! "); 
    } 
} 

} }

+0

それはまだ繰り返されません。 – jaegers1234

+0

私のコーディングはあなたのものとは少し異なりますが、私はまだ同じ結果を得ています。コード – M4rss

+0

ありがとうございました。あなたが気に入らなければ何が変わったのか、私が間違っていたことを教えてくれますか?将来の努力のために私が知っておくのに役立つ。 – jaegers1234