Scanner-Fehler, den ich nicht herausfinden können: NoSuchElementException

Es zu Abstürzen auf der Dritten Linie innerhalb der do-while-Schleife, und nicht warten, bis mein input:

 input = kb.nextInt();

Stack trace:

Exception in thread "main" java.util.NoSuchElementException

in java.util.Scanner.throwFor(Quelle Unbekannt)

in java.util.Scanner.next(Unknown Source)

in java.util.Scanner.nextInt(Unknown Source)

in java.util.Scanner.nextInt(Unknown Source)

am main.MainDriver.main(MainDriver.java:50)

Relevante code:

do
    {
        displayFullMenu();
        System.out.print("Selection: ");
        input = kb.nextInt();

        switch (input)
        {
        //Create new survey
        case 1:     currentSurvey = new Survey();
                    break;

        //Display current survey            
        case 2:     currentSurvey.display();
                    break;

        //Save current survey           
        case 3:     saveSurvey(currentSurvey);
                    break;

        //Load a survey
        case 4:     currentSurvey = loadSurvey();
                    break;

        //Modify a survey
        case 5:     currentSurvey.modify();
                    break;

        /*******************Test Functions*******************/

        //Create new test
        case 6:     currentSurvey = new Test();
                    break;

        //Display current test
        case 7:     currentSurvey.display();
                    break;

        //Save current test
        case 8:     saveSurvey(currentSurvey);
                    break;

        //Load a test
        case 9:     currentSurvey = loadTest();
                    break;

        //Modify a test
        case 10:    currentSurvey.modify();

        default:    System.out.println("Invalid choice. Please make a valid choice: ");
                    input = kb.nextInt();
                    System.out.println();
        }
    } while (input != 99);
    kb.close();

Stürzt es ab, nachdem ich wählen Sie option 9. Es speichert die Datei korrekt, dann geht zurück an den Anfang der Schleife, und stürzt bei der zuvor genannten Linie. Ich will es zu Fragen, für mehr input.

Was gibt?

  • Wie sind Sie initialisieren den scanner. Verwenden Sie "Scanner kb = new Scanner(System.in);" ? Außerdem aktivieren debugging-Symbole beim kompilieren geben Sie die Zeilennummern in Ihrem stack-trace.
  • ja, ich bin initialisieren es so. Wenn ich wählen Sie die option 8, in saveSurvey(), es einen neuen Scanner (in dieser Methode), weil dies alles in meiner main-Methode. Könnte das das Problem sein?
  • Das ist der einzige Ort, wo Sie Ihre Instanziierung des Scanners und schließen Sie es? Kann sein, dass du Sie tun das gleiche, in einigen von diesen Methoden wird es genannt.
  • Gurung das ist richtig!!!!
InformationsquelleAutor iaacp | 2012-11-04
Schreibe einen Kommentar