Java.util.Scaner entree et csq sur les variables

Fermé
EmmaD - 26 févr. 2013 à 18:40
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 26 févr. 2013 à 20:17
Re bonjour !
Mon TP de java à bien avancé, après des recherches très fructueuses sur la toile. Cependant, un point reste encore peu clair...
J'ai décidée d'utiliser la saisie clavier afin de rendre le programme un poil plus interactif, j'ai pour cela appelée la fonction "java.util.Scaner entree" ainsi que des itérations de "system.out.println("blablabla")". Mon code ressemble à ça :
public static void main (String[] arg)  {
		java.util.Scanner entree =   new java.util.Scanner(System.in);
		// Fonction spécifiant la saisie via clavier
		System.out.println("Donnez la marque du moteur :");
		String marque = entree.next();
			//Ce qu'il s'est passé : on a affiché la question via "System.out.println"
			//Le resultat tapé sera stocké dans la variable "marque" de type "string"
			//entree.next() renvoie la prochaine chaine de caractère. 
		System.out.println("Donnez la puissance du moteur (cm3) ");
		int puissance = entree.nextInt();
		entree.nextLine();
			//Pareil que pour la marque
			//S'ajoute à ça "entree.nextLine()", fonction renvoyant à la prochaine ligne et ignorant la fin de la ligne (les informations nous intéressant se situent en début de ligne)
		System.out.println(" Votre moteur est de la marque " + marque + " et de " + puissance + "cm3");
			//On affiche le résultat dans une phrase toute belle
	    } 


J'vous ai laissé les commentaires, n'hésitez pas si je me trompe dans mon interprétation...
Ma question est la suivante : java.util.Scaner entree affecte-t-il bien les variables visées ?
Autrement dit les valeurs des variables a la fin du programme sont elles bien égales à ce qui à été saisi par l'utilisateur ?

J'compte sur vous pour m'éclaircir !
Très cordialement,
Emma

1 réponse

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
26 févr. 2013 à 20:17
Tu as bien su éviter l'un des principaux piège dans ce genre de code, mais l'as tu fait volontairement ?

Lorsque l'utilisateur entres un entier, en général il appuie aussi sur la touche Entrée. Et cela rajoute un caractère qui n'est pas lu tout de suite. Du coup lorsque tu fais un nextInt, il faut faire un nextLine juste après, et ça tu l'as fait donc c'est bien.

Par contre, pour lire une ligne, utilise la méthode nextLine, et pas la méthode next qui est "réservée" pour l'utilisation d'un pattern personnalisé (que l'on spécifie avec la méthode useDelimiter).

Pour le reste rien de spécial à ajouter, à part peut-être que si tu mets des commentaires assez long, il vaut mieux les mettre sur une ligne à part (juste avant la partie du code qu'elle décrit)
0