Saisie controlée [Résolu]

Signaler
Messages postés
7
Date d'inscription
dimanche 16 décembre 2012
Statut
Membre
Dernière intervention
29 octobre 2013
-
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
-
Bonjour, suite à un tp de cours, je dois faire un programme où l'on a le droit à 5 essais pour trouver un chiffre en 1 et 10 , voici ce que j'ai fait :

import java.util.Scanner;
public class SaisieInfinie {
    public static void main(String[] arguments) {
        // Déclaration des variables
        Scanner lecteur = new Scanner(System.in);
        int saisie ;
        String message = "Entrer un nombre entier entre 1 et 10: " ;
        int compteur ;
        compteur = 0 ;
        boolean code;

        // Traitements
        while ( compteur < 5 ) {
            System.out.print(message);
            saisie = lecteur.nextInt() ;
            if (saisie!=5) {
                code=false;
                compteur= compteur + 1;
            }
            else {
                code=true;
                compteur = 6 ;
            }
        }
        // Affichages
        if (code=true) {
            System.out.println("Vous avez bien saisie 5 !");
        }
        else {
            System.out.println("5 saisies invalides, fin du programme");
        }
    }
}

Jusque la , mon programme réagis correctement , le logiciel s'arrête bien quand je rentre le chiffre 5 et me dis le message voulu, mais si jamais je rentre 5 mauvaises réponses, le logiciel s'arrete, en laissant le message "vous avez bien saisie 5 !"
Pourriez vous me dire comment changer cela pour que le programme fonctionne correctement ?

Merci d'avance , Guix090.

4 réponses

Messages postés
16309
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 avril 2021
115
Pour l'instant ta boucle while ne gère qu'un seul cas : celui où on s'arrête après 5 essais. Il faut aussi que tu gères le cas où la valeur est correcte, or tu n'as aucun tests pour vérifier si tu es bien entre 1 et 10... Souvenir, souvenir !

Attention !
if (code=true)
fais une affectation de la valeur true à la variable code. Tu dois faire
if (code==true)
ou encore mieux :
if (code)
.
Messages postés
15021
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
19 avril 2021
94
Hello,
Je ne fais que passer.
Je me suis permis de rajouter les balises code (4e icone au-dessus de la zone de texte) autour de ton code.
Merci d'y penser la prochaine fois ;)
Messages postés
7
Date d'inscription
dimanche 16 décembre 2012
Statut
Membre
Dernière intervention
29 octobre 2013

Bon bah j'ai résolu mon problème.
Deja, merci KX , j'ai suivi ton conseil , et ça m'a bien aidé.
De plus , j'avais compris de travers , il ne faut pas un nombre en particulier , mais un nombre entre 1 et 10 , voila donc mon nouveau programme :

import java.util.Scanner;
public class SaisieControleeA  {
  public static void main(String[] arguments) {
        
// Déclaration des variables

        Scanner lecteur = new Scanner(System.in);
        int saisie ;
        String message = "Entrer un nombre entier entre 1 et 10: " ;
        int compteur ;
        compteur = 0 ;
        boolean code;
        code = false ;
	
	 
 // Traitements
	
	  while ( compteur < 5 ) {
                System.out.print(message);
                saisie = lecteur.nextInt() ;
		if ((saisie <1 ) || (saisie > 10)) {
			compteur= compteur + 1 ;
			code = false;
		}
		else {
			compteur = 6 ;
			code = true ;
		}
	}

//Affichage

if (code) {
	System.out.println (" le nombre saisie est correct ");
}
else {
	System.out.println ( " 5 saisies incorrectes , fin du programme ");
}
}
}
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
337
Salut,

if (code=true) // Affectation de la valeur true à code
if (code==true) // On teste si code est égal à true
if (code) // C'est comme if(code==true) en plus joli


Donc, il faut que tu remplaces ton "code=true" par "code" et ca fonctionnera
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
337
Oups, cela a déjà été dit, je ne suis pas descendu assez bas sur la page désolé