IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Problème de variable


Sujet :

Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 14
    Points
    14
    Par défaut Problème de variable
    Bonjour !

    Débutant en Java, je suis en train de créer un programme de "Jeu du bon nombre".

    Seulement, mon problème (là où il y a le //PROBLEME), est que même si la variable "recommencer" est "oui" ou "non" ou "n" ou "o", la boucle continue et ne s'arrête pas alors qu'il est bien dit qu'elle devrait s'arréter si le bon mot est "oui" ou "non" ou "n" ou "o".

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    import java.util.Random;
    import java.util.Scanner;
     
     
    public class goodnumber {
     
    	public static void main(String[] args) {
    		System.out.println("Le jeu du bon nombre ! BingoNombre !\n");
    		Random r = new Random();
    		int valeur = 0 + r.nextInt(20 - 0); //Compris entre 0 et 20
    		int reponse=0;
    		Scanner sc = new Scanner(System.in);
    		Scanner sc2 = new Scanner(System.in);
    		String recommencer;
    		if(valeur>20)
    		{
    			System.out.println("Oula ! Erreur de creation du nombre random !");
    		}else{
    			System.out.println("Nombre genere !\n");
    			while(reponse != valeur)
    			{
    				System.out.println("Entrez le nombre !\n");
    				while( !sc.hasNextInt() ) { // verification du chiffre sil nest pas une lettre
    				    sc.nextLine();
    				    System.out.println("Saisissez un nombre s'il vous plait !");
    				    sc.nextLine();
    				}
    				reponse=sc.nextInt();
    				if (reponse>valeur)
    				{
    					System.out.println("Le random est plus petit !");
    				}else if(reponse==valeur){
    				}else{
    					System.out.println("Le random est plus grand !");
    				}
    			}
    			System.out.println("\nFelicitation ! Le nombre random est bien : "+valeur+" !");
    			System.out.println("\nSouhaitez vous recommencer ?");
    			recommencer=sc2.nextLine();
     
    			while(recommencer!=("oui")||recommencer!=("non")||recommencer!=("o")||recommencer!=("n")) // PROBLEME
    			{
    				System.out.println("\nEntrez une valeur correcte s il vous plait (oui,non,o,n)"); 
    				recommencer=sc2.nextLine();
    			}
     
    			if (recommencer.equals("oui")||recommencer.equals("o")) // string.equals() permet de mettre sous condition un String
    			{
    				System.out.println("Recommencons !");
    			}else if (recommencer.equals("non")||recommencer.equals("n"))
    			{
    				System.out.println("Merci d'avoir joue avec nous !");
    			}else{
    				System.out.println("Veuillez entrer une valeur correct ! Le jeu est termine.");
    			}
    		}
    	}
     
    }
    Merci de bien vouloir m'expliquer où est l'erreur parce que là je ne comprends pas :l

    Cordialement ,

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Pour comparer des objets il faut utiliser la méthode equals().
    == et != comparent l'identité et non pas l'égalité.


    a++

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 14
    Points
    14
    Par défaut Re
    Merci, mais cela ne fonctionne toujours pas :l

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    import java.util.Random;
    import java.util.Scanner;
     
     
    public class goodnumber {
     
    	public static void main(String[] args) {
    		System.out.println("Le jeu du bon nombre ! BingoNombre !\n");
    		Random r = new Random();
    		int valeur = 0 + r.nextInt(20 - 0); //Compris entre 0 et 20
    		int reponse=0;
    		Scanner sc = new Scanner(System.in);
    		Scanner sc2 = new Scanner(System.in);
    		String recommencer;
    		if(valeur>20)
    		{
    			System.out.println("Oula ! Erreur de creation du nombre random !");
    		}else{
    			System.out.println("Nombre genere !\n");
    			while(reponse != valeur)
    			{
    				System.out.println("Entrez le nombre !\n");
    				while( !sc.hasNextInt() ) { // verification du chiffre sil nest pas une lettre
    				    sc.nextLine();
    				    System.out.println("Saisissez un nombre s'il vous plait !");
    				    sc.nextLine();
    				}
    				reponse=sc.nextInt();
    				if (reponse>valeur)
    				{
    					System.out.println("Le random est plus petit !");
    				}else if(reponse==valeur){
    				}else{
    					System.out.println("Le random est plus grand !");
    				}
    			}
    			System.out.println("\nFelicitation ! Le nombre random est bien : "+valeur+" !");
    			System.out.println("\nSouhaitez vous recommencer ?");
    			recommencer=sc2.nextLine();
     
    			while(!recommencer.equals("oui")||!recommencer.equals("non")||!recommencer.equals("o")||!recommencer.equals("n")) // PROBLEME
    			{
    				System.out.println("\nEntrez une valeur correcte s il vous plait (oui,non,o,n)"); 
    				recommencer=sc2.nextLine();
    			}
     
    			if (recommencer.equals("oui")||recommencer.equals("o")) // string.equals() permet de mettre sous condition un String
    			{
    				System.out.println("Recommencons !");
    			}else if (recommencer.equals("non")||recommencer.equals("n"))
    			{
    				System.out.println("Merci d'avoir joue avec nous !");
    			}else{
    				System.out.println("Veuillez entrer une valeur correct ! Le jeu est termine.");
    			}
    		}
    	}
     
    }

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(!recommencer.equals("oui")||!recommencer.equals("non")||!recommencer.equals("o")||!recommencer.equals("n")) // PROBLEME
    si recommencer vaut "oui" :
    • !recommencer.equals("oui") est faux (pas vrai)
    • !recommencer.equals("non") est vrai (pas faux)
    • !recommencer.equals("o") est vrai (pas faux)
    • !recommencer.equals("n") est vrai (pas faux)


    faux ou vrai ou vrai ou vrai est toujours vrai... (pour un ou, il suffit qu'une expression soit vraie pour que le ou soit vrai)

    Il te faut un "et", ou faire "pas ( ou )"
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 14
    Points
    14
    Par défaut Re
    Superbe merci !

    Je poste la correction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    import java.util.Random;
    import java.util.Scanner;
     
     
    public class goodnumber {
     
    	public static void main(String[] args) {
    		System.out.println("Le jeu du bon nombre ! BingoNombre !\n");
    		Random r = new Random();
    		int valeur = 0 + r.nextInt(20 - 0); //Compris entre 0 et 20
    		int reponse=0;
    		Scanner sc = new Scanner(System.in);
    		Scanner sc2 = new Scanner(System.in);
    		String recommencer;
    		if(valeur>20)
    		{
    			System.out.println("Oula ! Erreur de creation du nombre random !");
    		}else{
    			System.out.println("Nombre genere !\n");
    			while(reponse != valeur)
    			{
    				System.out.println("Entrez le nombre !\n");
    				while( !sc.hasNextInt() ) { // verification du chiffre sil nest pas une lettre
    				    sc.nextLine();
    				    System.out.println("Saisissez un nombre s'il vous plait !");
    				    sc.nextLine();
    				}
    				reponse=sc.nextInt();
    				if (reponse>valeur)
    				{
    					System.out.println("Le random est plus petit !");
    				}else if(reponse==valeur){
    				}else{
    					System.out.println("Le random est plus grand !");
    				}
    			}
    			System.out.println("\nFelicitation ! Le nombre random est bien : "+valeur+" !");
    			System.out.println("\nSouhaitez vous recommencer ?");
    			recommencer=sc2.nextLine();
     
    			while(!recommencer.equals("oui")&&!recommencer.equals("non")&&!recommencer.equals("o")&&!recommencer.equals("n")) // PROBLEME
    			{
    				System.out.println("\nEntrez une valeur correcte s il vous plait (oui,non,o,n)"); 
    				recommencer=sc2.nextLine();
    			}
     
    			if (recommencer.equals("oui")||recommencer.equals("o")) // string.equals() permet de mettre sous condition un String
    			{
    				System.out.println("Recommencons !");
    			}else if (recommencer.equals("non")||recommencer.equals("n"))
    			{
    				System.out.println("Merci d'avoir joue avec nous !");
    			}else{
    				System.out.println("Veuillez entrer une valeur correct ! Le jeu est termine.");
    			}
    		}
    	}
     
    }
    Bonne journée =) !

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Au passage, on ne peut normalement pas ouvrir plus d'un Scanner par entrée... Et ça ne sert à rien de le faire d'ailleurs -_-°.

    Là avoir deux Scanner sc et sc2 n'est pas utile, et ça ne marche que par hasard. Il faudrait utiliser juste sc et c'est tout.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Au passage, on ne peut normalement pas ouvrir plus d'un Scanner par entrée... Et ça ne sert à rien de le faire d'ailleurs -_-°.

    Là avoir deux Scanner sc et sc2 n'est pas utile, et ça ne marche que par hasard. Il faudrait utiliser juste sc et c'est tout.
    Oui. En plus, je te l'avais déjà dit dans l'autre discussion.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 16
    Points : 14
    Points
    14
    Par défaut Re
    Merci Joel,

    Il est vrai que je n'avais compris :
    Attention, ne pas utiliser plusieurs Scanner sur System.in : le stream est bufferisé, donc il peut commencer à lire des caractères en avance de ce que tu récupères par nextInt, ce qu'il fait que l'autre va ne pas avoir accès à ces caractères, et donc tu vas avoir des dysfonctionnements.
    Mais j'ai maintenant compris ^^

Discussions similaires

  1. [VB.NET] Probléme de variable
    Par Silvia12 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/03/2005, 11h51
  2. [Debutant(e)]problème de variable d'environnement
    Par tolsam dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/08/2004, 19h08
  3. Problème de variable
    Par vp dans le forum Windows
    Réponses: 2
    Dernier message: 14/05/2004, 16h27
  4. [Débutant] Problème de variables
    Par bonnefr dans le forum SWT/JFace
    Réponses: 9
    Dernier message: 12/05/2004, 17h41
  5. [servlet]problème de variable jamais nulle
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/03/2004, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo