Problème avec Java Scanner sc.nextLine();
sry sur mon anglais 🙂
Im nouveau à la programmation Java et j'ai un problème avec le Scanner. J'ai besoin de lire un Int, de montrer quelques trucs, puis lire une chaîne donc j'utilise sc.nextInt(); montrer mon stuff showMenu(); et puis essayez de lire une chaîne de caractères palabra=sc.nextLine();
Certains me l'a dit j'ai besoin d'utiliser un sc.nextLine(); après sc.nextInt(); mais je ne comprends pas pourquoi vous avez à 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 de votre Aide 😀
OriginalL'auteur Jonathan B | 2010-03-14
Vous devez vous connecter pour publier un commentaire.
nextInt()
ne lit jusqu'à ce qu'il a trouvé de l'int et puis s'arrête.Que vous avez à faire
nextLine()
parce que le flux d'entrée a encore un caractère de saut de ligne et, éventuellement, d'autres non int données sur la ligne. L'appel denextLine()
lit toutes les données de la gauche, y compris l'entrée de l'utilisateur pressé entre la saisie d'un int et de saisir une Chaîne de caractères.La première fois que j'ai rencontré ce problème il perplexe moi aussi, mais une fois que vous savez pourquoi il est logique!
est agréable de savoir que je ne suis pas le seul 😀
merci pour l'explication.
la haine de l'application de console!
OriginalL'auteur Ben S
Lorsque vous saisissez une valeur (si
String
,int
,double
, etc...) et appuyez sur "enter", un caractère de nouvelle ligne (aka'\n'
) sera ajouté à la fin de votre saisie. Donc, si vous pénétrez dans un int,sc.nextInt()
ne lire l'entier saisi et de laisser le'\n'
derrière dans la mémoire tampon. Ainsi, la manière de régler ce problème est d'ajouter unsc.nextLine()
qui va lire les restes et de les jeter. C'est pourquoi vous devez avoir qu'une seule ligne de code dans votre programme.OriginalL'auteur Fadi Hanna AL-Kass