Scanner in Java funktioniert nicht

Ich bin versucht, zu schreiben eine sehr einfache Zahl Ratespiel (code ist unten). Nach 1 Runde ist beendet, der Benutzer soll in der Lage sein zu entscheiden, ob er/Sie will, um eine weitere Runde spielen oder nicht. Problem ist, das Programm immer überspringt die Letzte Frage (nicht dass der Benutzer die Antwort " y " oder sonst. Was vermisse ich hier? Gibt es etwas über java.util.Scanner ich weiß nicht, über?

import java.util.Random;
import java.util.Scanner;

public class GuessNum {

public GuessNum() {         

        int numRandom = 0;    
        int numGuess;    
        int life = 5;    
        String want = "";    
        Random rand = new Random();    
        Scanner scan = new Scanner(System.in);

        do {
            int lifeLeft = 5;
            numRandom = rand.nextInt(9)+1;

            System.out.print("\nGuess the Number [1..10]\n");
            System.out.print("===================\n");
            System.out.print("You have " + lifeLeft + " chances.\n");

            do {
                do {
                    System.out.print("What number do I have in mind: ");
                    numGuess = scan.nextInt();

                    if (numGuess < 1 || numGuess > 10)    
                        System.out.println("Invalid input. Range is 1-10.");    
                } while (numGuess < 1 || numGuess > 10);

                if (numGuess != numRandom && lifeLeft != 0)
                    System.out.println("Wrong! You only have " + --lifeLeft + " chances left.");

            } while (numGuess!=numRandom && lifeLeft > 0);

            if (numGuess == numRandom)
                System.out.println("Correct! -- in " + (life - lifeLeft) + " guess(es).");

            if (lifeLeft == 0) {
                System.out.println("You have no more lives..");
                System.out.println("This is the number: " + numRandom);
            }

            System.out.print("\nEnter 'y' if you want to play again or any other character to exit: ");
                want = scan.nextLine();
        } while (want.equals("y") || want.equals("Y"));
    }

    public static void main(String[] args) {            
        new GuessNum();
    }
}
Nach einem Jahrzehnt der Klagen darüber, wie schwierig es ist, einfach zu Holen, ein bisschen input von der Konsole aus, so Gaben uns die Scanner Klasse, so "Beginning Java" Texte schreiben konnte, prägnante Beispiele. Aber Scanner ist weit entfernt von harmlos. Ich in der Regel die Mühe machen, explizit zu Lesen und scan-Linien über BufferedReader etc.
Weitere Informationen zur Verwendung Scanner und Validierung der Eingabe (z.B. zahlen, Vokale-only, etc) finden Sie unter: stackoverflow.com/questions/3059333/...

InformationsquelleAutor bow | 2010-07-13

Schreibe einen Kommentar