Question

SRY à propos de mon anglais :)
Im nouveau à la programmation Java et moi avons un problème avec le scanner. Je dois lire un Int, montrer quelques trucs, puis lire une chaîne donc j'utilise sc.nextInt (); montrer mes affaires showMenu (); et puis essayer de lire une chaîne palabra = sc.nextLine ();

Quelqu'un m'a dit que je dois utiliser un sc.nextLine (); après sc.nextInt (); mais je ne comprends pas pourquoi avez-vous de le faire: (

Voici mon 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 beaucoup pour votre temps et votre aide: D

Était-ce utile?

La solution

nextInt() lit seulement jusqu'à ce qu'il trouve l'int puis arrête.

Vous devez faire nextLine() parce que le flux d'entrée a encore un retour à la ligne et éventuellement d'autres données non-int sur la ligne. L'appel nextLine() lit dans toutes les données qui reste, y compris l'utilisateur entrer l'entrée pressé entre un int et entrer dans une chaîne.

Autres conseils

Lorsque vous entrez une valeur (si String, int, double, etc ...) et appuyez sur « entrer » un caractère de nouvelle ligne (aka '\n') sera ajouté à la fin de votre entrée. Donc, si vous entrez un int, sc.nextInt() ne lit l'entier est entré et laisser le '\n' derrière dans la mémoire tampon. Ainsi, la façon de résoudre ce problème est d'ajouter un sc.nextLine() qui lit les restes et le jeter. C'est pourquoi vous devez avoir qu'une ligne de code dans votre programme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top