Problem mit Scanner

Diskutiere Problem mit Scanner im Java Basics - Anfänger-Themen Bereich.
N

nuke87

Hallo Leute,
ich habe ein Problem und bitte um Hilfe.

und zwar soll es ein Zahlenrate Spiel werden, Bis jetzt besteht das Programm aus zwei Teilen, Begruessung und Rate_Spiel.
Wenn ich es aus main starte dann gebe ich name ein und danach sollte eigentlich die Eingabe für die Zahl sein, aber ich kriege ohne was einzugeben einen Fehler.

Java:
Nenne mir zuerst bitte deinen Namen:
d
Hallo d.
Du hast ein ziemlich coolen Namen


..................................


Zahlen raten





Lasst uns beginnen





So d, ich möchte mit dir ein Spiel spielen.


Ich denke mir eine Zahl zwischen 1 und 10 aus, diese sollst du jetzt erraten


Exception in thread "main" java.util.NoSuchElementException


    at java.util.Scanner.throwFor(Scanner.java:862)


    at java.util.Scanner.next(Scanner.java:1485)


    at java.util.Scanner.nextInt(Scanner.java:2117)


    at java.util.Scanner.nextInt(Scanner.java:2076)


    at MathematicsforKids.Rate_Spiel(MathematicsforKids.java:29)


    at MathKIDS_test.main(MathKIDS_test.java:6)



und hier mein code

Java:
import java.util.Scanner;





public class MathematicsforKids {


    static String [I]name[/I];


    public static void Begruessiung() {


        Scanner sc = new Scanner(System.[B][I]in[/I][/B]);


        System.[B][I]out[/I][/B].println("WILLKOMEN BEI DEM PROGRAMM \"Mathematik für Kinder\"");


        System.[B][I]out[/I][/B].println("----------------------------------------------------");


        System.[B][I]out[/I][/B].println("Nenne mir zuerst bitte deinen Namen:");


        [I]name[/I] = sc.next();


        System.[B][I]out[/I][/B].printf("Hallo %s.%n",[I]name[/I]);


        System.[B][I]out[/I][/B].println("Du hast ein ziemlich coolen Namen");


        sc.close();


        


    }


    public static void Rate_Spiel() {


        


        int zufallszahl = 0;


        zufallszahl = (int) (Math.[I]random[/I]() * 10) + 1;


        Scanner n = new Scanner(System.[B][I]in[/I][/B]);


        int guess = 0;


        System.[B][I]out[/I][/B].println("..................................");


        System.[B][I]out[/I][/B].println("Zahlen raten");


        System.[B][I]out[/I][/B].println();


        System.[B][I]out[/I][/B].println("Lasst uns beginnen");


        System.[B][I]out[/I][/B].println();


        System.[B][I]out[/I][/B].printf("So %s, ich möchte mit dir ein Spiel spielen.%n",[I]name[/I]);


        System.[B][I]out[/I][/B].println("Ich denke mir eine Zahl zwischen 1 und 10 aus, diese sollst du jetzt erraten");


        guess = n.nextInt();


        


        n.close();


        


        if (guess == zufallszahl) {


            System.[B][I]out[/I][/B].println("Super %s, du hast meine Zahl erraten");


        }


        


        if (guess != zufallszahl) {


            System.[B][I]out[/I][/B].print("Leider falsch, meine Zahl war: ");


            System.[B][I]out[/I][/B].println(zufallszahl);


        }


        


        


    }





    








}
 
J

JustNobody

Du schließt den Scanner auf System.in, und damit wird auch System.in auch geschlossen und somit kannst Du keine weiteren Eingaben mehr einlesen.

Lösung: scanner nicht schließen. Da wäre meine Empfehlung, in Deiner Klasse einfach eine public static Scanner Variable zu deklarieren und sofort zu initialisieren und dann diese Instanz immer nutzen und nie schließen.
 
krgewb

krgewb

Ohne doppelte Leerzeichen.
Java:
Nenne mir zuerst bitte deinen Namen:
d
Hallo d.
Du hast ein ziemlich coolen Namen
..................................
Zahlen raten
Lasst uns beginnen
So d, ich möchte mit dir ein Spiel spielen.
Ich denke mir eine Zahl zwischen 1 und 10 aus, diese sollst du jetzt erraten

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at MathematicsforKids.Rate_Spiel(MathematicsforKids.java:29)
    at MathKIDS_test.main(MathKIDS_test.java:6)
Java:
import java.util.Scanner;


public class MathematicsforKids {

    static String name;

    public static void Begruessiung() {
        Scanner sc = new Scanner(System.in);
        System.out.println("WILLKOMEN BEI DEM PROGRAMM \"Mathematik für Kinder\"");
        System.out.println("----------------------------------------------------");
        System.out.println("Nenne mir zuerst bitte deinen Namen:");
        name = sc.next();
        System.out.printf("Hallo %s.%n",name);
        System.out.println("Du hast ein ziemlich coolen Namen");
        sc.close();
    }

    public static void Rate_Spiel() {
        int zufallszahl = 0;
        zufallszahl = (int) (Math.random() * 10) + 1;
        Scanner n = new Scanner(System.in);
        int guess = 0;
        System.out.println("..................................");
        System.out.println("Zahlen raten");
        System.out.println();
        System.out.println("Lasst uns beginnen");
        System.out.println();
        System.out.printf("So %s, ich möchte mit dir ein Spiel spielen.%n", name);
        System.out.println("Ich denke mir eine Zahl zwischen 1 und 10 aus, diese sollst du jetzt erraten");
        guess = n.nextInt();
        n.close();
        if (guess == zufallszahl) {
            System.out.println("Super %s, du hast meine Zahl erraten");
        }
        if (guess != zufallszahl) {
            System.out.print("Leider falsch, meine Zahl war: ");
            System.out.println(zufallszahl);
        }
    }
}
 
Zuletzt bearbeitet:
Thema: 

Problem mit Scanner

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben