[Java] variable scanner boucle do...while

Résolu/Fermé
wolfsen Messages postés 3 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 1 octobre 2011 - 1 oct. 2011 à 16:33
wolfsen Messages postés 3 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 1 octobre 2011 - 1 oct. 2011 à 17:35
Bonjour,
Si vous êtes pressés, je vais résumer mon topic à cette question:
Comment faire pour qu'à chaque nouvelle boucle, le programme crée une nouvelle variable scanner sc(n+1) que l'utilisateur pourra remplir à nouveau s'il vérifie les conditions?

Maintenant en version longue:

Je fais du java depuis 1 mois et donc pour m'entrainer je souhaite créer un programme simple qui permet une sélection de nom de personnage semblable à celle des rpgs:
-On demande au joueur de choisir un nom
-S'il confirme, on lui affiche "votre personnage s'appelle x"
-S'il ne confirme pas on lui redemande un nom et ainsi de suite jusqu'à ce qu'il confirme


Je suis parti sur ça:
String IG; //IG comme in game name
System.out.println("Choisissez votre nom");
Scanner scIG = new Scanner(System.in);
IG=scIG.nextLine();
System.out.println("Voulez vous vous appeler "+ IG+"? Ecrire oui ou non.");
String sure,oui,non;
oui="oui";
non="non";
Scanner scSure = new Scanner(System.in);
sure=scSure.nextLine();
if (sure.equals(oui))
{
System.out.println("Votre personnage s'appelle désormais " +IG+"!");
}
else
do{
System.out.println("Choisissez votre nom");
Scanner scIG2 = new Scanner(System.in);
IG=scIG2.nextLine();
System.out.println("Voulez vous vous appeler "+ IG+"? Ecrire oui ou non.");
Scanner scSure2 = new Scanner(System.in);
sure=scSure.nextLine();
}
while(sure.compareTo(oui) == 1);

Le problème de mon programme est qu'il ne permet de redemander le nom qu'une seule fois, parce que la boucle me permet créer qu'1 seule nouvelle variables scIG2 écrire à la main. Donc j'aimerais savoir s'il y a moyen qu'à chaque nouvelle boucle de créer une variable scIG(n+1) pour pouvoir exécuter la boucle autant de fois que je veux. Je pourrais peut-être utiliser la boucle for, mais je ne veux pas d'incrémentation de la variable, juste a création d'une nouvelle à chaque boucle.

Merci de vos réponses
A voir également:

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
1 oct. 2011 à 16:47
Tu n'as pas besoin de créer plusieurs fois de Scanner sur System.in, là tu le fais 4 fois (scIG1, scSure, sciG2, scSure2) ce qui est beaucoup trop !
En fait tes Scanner sont tous liés à System.in qui est de toute façon unique, donc il est inutile de créer de double, un seul suffira.

final Scanner clavier = new Scanner(System.in);

String IG; //IG comme in game name 
String sure, oui="oui", non="non";

do
{ 
	System.out.println("Choisissez votre nom"); 
	IG = clavier.nextLine(); 

	do
	{
		System.out.println("Voulez vous vous appeler "+ IG+" ? Ecrire "+oui+" ou "+non);
		sure=clavier.nextLine(); 
	}
	while(!sure.equals(oui) && !sure.equals(non));
} 
while(!sure.equals(oui));

System.out.println("Votre personnage s'appelle désormais "+IG+" !");
2
wolfsen Messages postés 3 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 1 octobre 2011
1 oct. 2011 à 17:35
Merci beaucoup KX, en fait mon erreur était plutôt une erreur de compréhension à propos du scanner, je pensais que chacune des entrées clavier résultaient en une variable et donc qu'il fallait à chaque fois en recréer une pour pouvoir entrer une nouvelle donnée.

J'ai juste réutilisé ta simplification du scanner en clavier, sinon j'ai refais tout le reste par moi même (j'ai rien contre toi, juste qu'il faut que je sache le faire moi même plutôt que de copier sur le tiens). C'est un peu plus long mais c'est du fait maison :D

final Scanner clavier = new Scanner(System.in);
String IG;
System.out.println("Choisissez votre nom");
IG = clavier.nextLine();
System.out.println("Voulez vous vous appeler "+ IG+"? Ecrire oui ou non.");
String sure,oui,non;
oui="oui";
non="non";
sure=clavier.nextLine();
if (sure.equals(oui))
{
System.out.println("Votre personnage s'appelle désormais " +IG+"!");
}
else
do{
System.out.println("Choisissez votre nom");
IG=clavier.nextLine();
System.out.println("Voulez vous vous appeler "+ IG+"? Ecrire oui ou non.");
sure=clavier.nextLine();
}
while(!sure.equals(oui));



Voilà merci
0