Saisie utilisateur

Bonjour ! me voici avec un nouveau problème qui n’est pas grand-chose et surement très bête…
Je fais une saisie utilisateur sous Java à l’aide de “Scanner” comme ci-dessous:


System.out.println("Nom du titulaire?  ");
        String rep4 = saisieUtilisateur.next();
        System.out.println("Prenom du titulaire?  ");
        String rep5 = saisieUtilisateur.next();
        System.out.println("Adresse du titulaire?  ");
        String rep6 = saisieUtilisateur.next();

La saisie fonctionne très bien, mais si par exemple je mets comme nom : “le dupond” qui est un nom composé, Java va me faire comme si j’avais rentré rep4=“le” et rep5=“dupond” et passe donc directement à la saisie de rep6.

Merci pour votre aide :wink:
Edité le 18/04/2012 à 15:35

Slt,

Essai avec .nextline() au lieu de .next().Cela pourrais peut etre resoudre le problème si je dis pas de betise :slight_smile:

A+

Re-bonjour, merci pour ton aide mais ça ne fonctionne pas :arf: en mettant le .nextline() il m’affiche "Nom du titulaire? " et directement après "Prénom du titulaire? " sans que je puisse faire la saisie du nom.

Je ne sais pas si le problème du .nextLine() peut venir du code précédent, mais dans le doute voila le bloc:

[code]
System.out.println("Numéro de compte à ajouter? "); //ajouter un compte
int ent3 = saisieUtilisateur.nextInt();
Boolean dispo=false;
while (dispo == false)
{
if (b.RendCompte(ent3) == null)
{
System.out.println(“Numéro de compte disponible”);
dispo=true;
}
else
{
System.out.println(“Numéro de compte déjà éxistant”);
}
}
System.out.println("Nom du titulaire? ");
String rep4 = saisieUtilisateur.nextLine();
System.out.println("Prenom du titulaire? ");
String rep5 = saisieUtilisateur.next();
System.out.println("Adresse du titulaire? ");
String rep6 = saisieUtilisateur.next();

Ok… on dirait qu’il garde en mémoire quelque chose qui fais sauté une partie de ta récuperation de saisie
j’ai trouvé ca en faisant une recherche sur cette idée

www.siteduzero.com…

Ce qui ressemble a ton probleme se trouve en bas de page.
En ajoutant celle ligne il n’y a pas de changement ?
Une maniere moins optimisée mais cela te depannerai serait peut etre de declarer a nouveau ton scanner chaque fois que tu en ai besoin afin qu’il soit vide. Mais c’est pas l’idéal :-/


System.out.println("Nom du titulaire? ");

saisieUtilisateur.nextLine() //  OU  Scanner saisieUtilisateur = new scanner(System.in)

String rep4 = saisieUtilisateur.nextLine();
System.out.println("Prenom du titulaire? ");
String rep5 = saisieUtilisateur.nextLine();
System.out.println("Adresse du titulaire? ");
String rep6 = saisieUtilisateur.nextLine();

Essai peut etre d’utiliser des nextline() partout ou tu veux recupere une string.Ce sera toujours plus appropiré que le next() classique.
Si ca ne va toujours pas, j’essayerai se soir. j’ai pas d’IDE pour du java actuellement sous la main^^
D’ici la peut etre quelqu’un de plus habitué au java que moi aura la solution ^^
Edité le 18/04/2012 à 15:28

Merci de ton aide ! j’ai fait un mixe des deux solutions et ça fonctionne !


System.out.println("Nom du titulaire? ");
String rep4 = new Scanner(System.in).nextLine();
System.out.println("Prenom du titulaire? ");
String rep5 = new Scanner(System.in).nextLine();

Si je ne le faisais que pour le premier ça ne changeait rien mais si je mets tout fonctionne très bien :slight_smile:
Merci de ton aide maurice006 :wink:

De rien,Oui j’avais pas precisé que si ca marchais pour le premier, le problème se presenterait plus bas , désolé :-(:
Par contre je pense pas que cela soit tres optimisé d’appeler X fois le constructeur :slight_smile:
A voir si il existe pas une meilleur solution…

Faire appel a

saisieUtilisateur.nextLine()

avant chaque affectation ne fonctionne pas ?

Efféctivement si je fait comme ça:


System.out.println("Nom du titulaire?  ");
        saisieUtilisateur.nextLine();
        String rep4 =saisieUtilisateur.nextLine();
        System.out.println("Prenom du titulaire?  ");
        String rep5 =saisieUtilisateur.nextLine();

ça marche aussi :wink: