[Java] variable scanner boucle do...while [Résolu/Fermé]

Signaler
Messages postés
3
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
1 octobre 2011
-
Messages postés
3
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
1 octobre 2011
-
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

2 réponses

Messages postés
16221
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
20 mai 2020
2 617
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 85432 internautes nous ont dit merci ce mois-ci

Messages postés
3
Date d'inscription
lundi 31 mars 2008
Statut
Membre
Dernière intervention
1 octobre 2011

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