Frage

sry über mein Englisch :)
Im neu zu Java-Programmierung und ich habe ein Problem mit Scanner. Ich brauche ein Int, zeigen ein paar Sachen zu lesen und dann einen String lesen, so i verwenden sc.nextInt (); zeigen meine Sachen showMenu (); und dann versuchen, zu lesen eine Zeichenfolge palabra = sc.nextLine ();

Jemand hat mir gesagt, ich brauche ein sc.nextLine () zu verwenden; nach sc.nextInt (); aber ich verstehe nicht, warum müssen Sie es tun (

Hier ist mein Code:

public static void main(String[] args) {
    // TODO code application logic here
    Scanner sc = new Scanner(System.in);
    int respuesta = 1;

    showMenu();
    respuesta = sc.nextInt();
    sc.nextLine(); //Why is this line necessary for second scan to work?

    switch (respuesta){
        case 1:
            System.out.println("=== Palindromo ===");
            String palabra = sc.nextLine();
            if (esPalindromo(palabra) == true)
                System.out.println("Es Palindromo");
            else
                System.out.println("No es Palindromo");
        break;
    }


}

Ty so viel für Ihre Zeit und Hilfe: D

War es hilfreich?

Lösung

nextInt() nur in liest, bis er den int gefunden hat und hält dann an.

Sie haben nextLine() zu tun, weil der Eingangsstrom noch ein Newline-Zeichen hat und möglicherweise auch andere nicht-int-Daten auf der Linie. Der Aufruf nextLine() liest in welchen Daten gelassen werden, einschließlich dem den Benutzers eingeben gedrückt zwischen einem int Eingabe und einem String eingeben.

Andere Tipps

Wenn Sie einen Wert (ob String, int, double, etc ...) und Hit 'Enter', ein neues Online-Charakter (aka '\n') wird an das Ende Ihrer Eingabe angehängt werden. Also, wenn Sie einen int Eingabe sind, sc.nextInt() liest nur die ganze Zahl eingegeben und lassen Sie die '\n' hinter im Puffer. So ist der Weg, dies zu beheben, ist ein sc.nextLine() hinzuzufügen, der die übrig gebliebenen lesen und wirft es weg. Aus diesem Grund Sie, dass eine Zeile Code in Ihrem Programm haben müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top