2016-05-11 3 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); 
    } 
} 

Hier ist die Aufforderung: eine Ausnahmeklasse erstellen BadGuessException genanntJava guessingGame Fehler

BadGuessException eine Unterklasse der Ausnahmeklasse sein sollte [1 Punkt] 2 Konstrukteure erstellen [1 Punkt] A Standardkonstruktor in der BadGuessException-Klasse, die die Nachricht "Entschuldigung, das war eine ungültige Schätzung!" an den übergeordneten Konstruktor mit dem Schlüsselwort super. Ein parametrisierter Konstruktor in der BadGuessException-Klasse, der den Parameter mithilfe des Schlüsselworts super an den übergeordneten Konstruktor übergibt. Erstellen Sie eine Klasse namens GuessingGame

Generieren Sie eine zufällige Zahl zwischen 1 und 10. Fordern Sie den Benutzer auf, die Nummer zu erraten. Ermöglichen Sie dem Benutzer unbegrenzte Versuche, die Nummer richtig zu erraten. [1 Punkt] Sobald der Nutzer die Nummer richtig geschätzt hat, drucken Sie "YOUR GOT IT!" und auszudrucken, wie viele Versuche der Benutzer benötigt hat, um die Nummer zu erraten. [1 Punkt] Verwenden Sie einen try-catch-Block, und fügen Sie Ihrem Code eine Ausnahmebehandlung hinzu. try-catch-Block korrekte Syntax [1 Punkt] Eine BadGuessException auslösen, wenn der Benutzer eine Zahl zwischen 1 und 10 eingibt. [1 Punkt] Fügen Sie einen weiteren catch-Block hinzu, um die Ausnahme auszulösen, wenn der Benutzer ein falsches Format eingibt für die Zahl raten sie, wie "fünf" oder "5.0". Dies sollte verhindern, dass Ihr Programm abstürzt oder eine Laufzeit Exception wirft. Wenn diese Ausnahme abgefangen wird, sollte das Programm nicht abstürzen und sollte "Sorry, Sie haben ein ungültiges Zahlenformat eingegeben" anzeigen. [1 Punkt]

Jetzt habe ich den Code ausgeführt, aber es läuft eine Schleife im Compiler wenn.

+0

Bitte versuchen Sie, zuerst den Debugger zu verwenden, und wenn Sie Ihre Post mit einer gründlicheren Beschreibung, wo und wie das Problem auftritt aktualisieren können, das würde helfen. –

+0

Der Fehler, den ich mit dem Code habe, ist für diesen Abschnitt: Fügen Sie einen weiteren catch-Block hinzu, um die ausgelöste Ausnahme abzufangen, wenn der Benutzer ein falsches Format für die vermutete Zahl eingibt, wie "five" oder "5.0". Dies sollte verhindern, dass Ihr Programm abstürzt oder eine Laufzeit Exception wirft. Wenn diese Ausnahme abgefangen wird, sollte das Programm nicht abstürzen und "Sorry, Sie haben ein ungültiges Zahlenformat eingegeben" anzeigen. – jaegers1234

+0

Und immer, wenn ich eine ungültige Antwort eintrage oder eingib, läuft der Code weiter: Errate eine Zahl zwischen 1 und 10: Bitte geben Sie eine Zahl zwischen 1 und 10 ein! – jaegers1234

Antwort

-1

public class 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

Es wird immer noch nicht wiederholen; -; – jaegers1234

+0

meine Codierung ist ein wenig anders als deins, aber ich habe immer noch die gleichen Ergebnisse Ich werde den Code – M4rss

+0

Vielen Dank es funktioniert, wenn es Ihnen nichts ausmacht können Sie mir sagen, was Sie geändert haben und was ich falsch gemacht habe, wie es wäre hilfreich für mich für zukünftige Bemühungen zu wissen. – jaegers1234