2016-07-03 13 views
0

Ich versuche, ein Ratespiel zu machen, in dem ich den Benutzer auffordere, eine Geheimnummer einzugeben, und er hat 6 Versuche, es richtig zu machen. Ich habe das meiste davon runter, außer dass ich es nicht bekommen kann, um es ihm zu sagen, sobald er seine Versuche erschöpft hat: "Entschuldigung, du bist raus, die Geheimzahl ist x")Wie bekomme ich dieses Ratespiel zur Arbeit?

Mein Code:

import java.util.*; 
import java.util.Scanner; 
public class GuessGame{ 
    static public void main(String[] args) 
    { 
    System.out.println("Welcome to the guessing game. I will pick a number between 1"); 
    System.out.println("and 100 and you will try to guess it in 6 tries or less. Here we go: "); 

    for (int i = 6; i > 0; i--) 
    { 
     Random rand = new Random(); 
     int secNumber = rand.nextInt(5); 
     int theNumber = secNumber; 
     Scanner s = new Scanner(System.in); 
     System.out.println("Enter a number: "); 
     int guess = s.nextInt(); 

     if (guess == theNumber) 
     { 
     System.out.println("That's it! You guessed it, the number was: " + theNumber + " and it took you " + (7 - i) + " tries."); 
     } 

     while(i > 0) { 
     if (guess < theNumber) 
     { 
     System.out.println("The secret number is bigger than than that. You have " + (i - 1) + " tries left."); 
     break; 
     } 
     else if (guess > theNumber) 
     { 
     System.out.println("The secret number is smaller than than that. You have " + (i - 1) + " tries left."); 
     break; 
     } 

    } 

den Benutzer zu sagen, wenn er Null versucht nach links und dann die Geheimnummer verraten, habe ich versucht, eine während (i == 0) { System.out.println (....); } Aber es tritt sofort nach der ersten Schätzung ein.

Antwort

0

Die Schleife while ist nicht erforderlich, und der Stil ist deaktiviert. Hier ist meine Lösung.

import java.util.*; 
import java.util.Scanner; 


public class GuessGame { 
    public static void main(String[] args) { 
    System.out.println("Welcome to the guessing game. I will pick a number between 1"); 
    System.out.println("and 100 and you will try to guess it in 6 tries or less. Here we go: "); 
    int theNumber = rand.nextInt(5); 
    for (int i = 6; i > 0; i--) { 
     Random rand = new Random(); 
     Scanner s = new Scanner(System.in); 
     System.out.println("Enter a number: "); 
     int guess = s.nextInt(); 

     if (guess == theNumber) { 
     System.out.println("That's it! You guessed it, the number was: " + theNumber + " and it took you " + (7 - i) + " tries."); 
     } else if (guess < theNumber) { 
     System.out.println("The secret number is bigger than than that. You have " + (i - 1) + " tries left."); 
     } else if (i == 1) { 
     System.out.println("You could not guess the number"); 
     } else { 
     System.out.println("The secret number is smaller than than that. You have " + (i - 1) + " tries left."); 
     } 
    } 
    } 
} 
+0

aber ich brauche etwas ausdrücklich für den Fall, wenn i Null ist, dh wenn die Vermutungen erschöpft sind. – user311302

+0

Ich habe es für dich repariert. –

+0

danke! aber es scheint, als würde sich die Zufallszahl durch die Vermutungen verändern. Ich dachte, ich hätte das mit der Variable 'theNumber' behoben. Wie kann ich das beheben? – user311302

0
  1. Die while-Schleife ist nicht erforderlich.
  2. zuweisen secNumber außerhalb der for-Schleife.
  3. die Variable theNumber ist nicht erforderlich.
  4. müssen Sie rand.nextInt(5) durch rand.nextInt(100) + 1 ersetzen, um eine Zahl zwischen 1 und 100 einschließlich zu haben.
  5. Ändern Sie i - 1 in i, da die Anzahl der Schätzungen gleich i ist.
  6. Entfernen Sie break von if Blöcke, weil diese Sie das Spiel verlassen lassen.
  7. break zur ersten if-Anweisung hinzufügen (wenn sie gewonnen)
  8. hinzufügen if-Anweisung der Spieler das Spiel ist vorbei wissen zu lassen.

    import java.util.*; 
    import java.util.Scanner; 
    
    public class GuessGame 
    { 
        public static void main(String[] args) 
        { 
         System.out.println("Welcome to the guessing game. I will pick a number between 1"); 
         System.out.println("and 100 and you will try to guess it in 6 tries or less. Here we go: "); 
         Random rand = new Random(); 
         int secNumber = rand.nextInt(100) + 1; // 2 4 
         for (int i = 6; i > 0; i--) 
         { 
          Scanner s = new Scanner(System.in); 
          System.out.println("Enter a number: "); 
          int guess = s.nextInt(); 
    
          if (guess == secNumber) 
          { 
           System.out.println("That's it! You guessed it, the number was: " + secNumber + " and it took you " + (7 - i) + " tries."); 
           break; // 7 
          } 
          else if (guess < theNumber) 
          { 
           System.out.println("The secret number is bigger than than that. You have " + i + " tries left."); // 5 
          } 
          else if (guess > theNumber) 
          { 
           System.out.println("The secret number is smaller than than that. You have " + i + " tries left."); // 5 
          } 
    
          if(i == 1) // 8 
          { 
           System.out.println("Out of tries."); 
          } 
         } 
        } 
    } 
    
Verwandte Themen