Saisie controlée [Résolu]

Messages postés
7
Date d'inscription
dimanche 16 décembre 2012
Dernière intervention
29 octobre 2013
-
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.
Afficher la suite 

Votre réponse

4 réponses

Messages postés
15857
Date d'inscription
samedi 31 mai 2008
Statut
Contributeur
Dernière intervention
10 décembre 2018
0
Merci
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)
.
Commenter la réponse de KX
Messages postés
14275
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
10 décembre 2018
0
Merci
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 ;)
Commenter la réponse de BunoCS
Messages postés
7
Date d'inscription
dimanche 16 décembre 2012
Dernière intervention
29 octobre 2013
0
Merci
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 ");
}
}
}
Commenter la réponse de Guix090
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
0
Merci
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
cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
-
Oups, cela a déjà été dit, je ne suis pas descendu assez bas sur la page désolé
Commenter la réponse de cs_Julien39

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.