Une bête erreur dans un bête script ....

Résolu
BotroxJrs Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
BotroxJrs Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
Salut , je débute dans la programmation cela fait un moment que ça m'interresse et j'ai décidé de me lancé , après avoir lu quelques pages j'essaye un petit script pour voir si je m'en sors ... malheureusement je bloque déja.

Voila mon essai

import java.util.Scanner;

public class sdz1 {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int reponse = 500;
String yes = "oui";
int reponse2 = 17;

do {
System.out.println("Combien font 10 x 50 ? ");
System.out.println("Réessayé jusqu'a ce que la réponse soit correcte");
reponse = sc.nextInt();
}
while(reponse != 500);

System.out.println("Bravo, bonne réponse ! ");
do {

System.out.println("Voulez-vous continuer ? ");

yes = sc.nextLine();


}while(yes != "oui");

do {
System.out.println("plus compliqué , combien fait : \"5+3x4\" ? " );
System.out.println("Réessayé jusqu'a ce que la réponse soit correcte");
reponse2 = sc.nextInt();

}while(reponse2 != 17);

System.out.print("Très bien, tu as reussis ! ");

}
}


Le premier problème est que le
 "Voulez-vous continuer ? "
s'affiche 2 fois , bon ça c'est plutôt secondaire .
Le problème suivant est que je fait la même démarche pour chaque boucle mais la boucle "
"Voulez-vous continuer ? "
ne fonctionne pas , quand j'entre la réponse
 "oui"
la boucle recommence et me re-demande
"Voulez-vous continuer ? "
....
Merci d'avance a ceux qui vont prendre de leur temps pour m'aider !
A voir également:

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Le problème c'est la combinaison
sc.nextInt()
et
sc.nextLine()
car quand tu travailles avec le clavier, tu tapes ton nombre avec
sc.nextInt()
et après tu appuies sur Entrée qui est consommée par le
sc.nextLine()
suivant...

Deux manière de résoudre le problème :
  • Après chaque
    sc.nextInt()
    tu rajoute un
    sc.nextLine()
    qui récupère la touche Entrée.
  • Tu remplaces tes
    sc.nextInt()
    par un
    Integer.parseInt(sc.nextLine())
    qui convertit la ligne en entier.

Personnellement je préfère la deuxième solution, mais la première permet de mieux comprendre le problème.

Remarque : c'est une particularité qui ne concerne que le clavier, mais la classe Scanner est plus générale que ça.
0
BotroxJrs Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Parfait , merci beaucoup !
0
tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   122
 
Pour le deuxième problème, c'est la vérification de l'égalité pour les chaînes de caractères (String). Pour vérifier qu'une chaîne est différentes d'une autre, l'opérateur != ne fonctionne plus, il faut faire appel à la fonction equals de la classe String, alors au lieu d'avoir :

while(yes != "oui")


Vous devez mettre :

while(!yes.equals("oui"))
0
BotroxJrs Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Effectivement ca fonctionne mieux comme ca , merci beaucoup .
0