Saisie controlée

Résolu
Guix090
Messages postés
7
Date d'inscription
dimanche 16 décembre 2012
Statut
Membre
Dernière intervention
29 octobre 2013
- Modifié par BunoCS le 30/09/2013 à 09:26
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
- 30 sept. 2013 à 14:27
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

KX
Messages postés
16540
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 mai 2022
124
29 sept. 2013 à 19:00
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)
.
0
BunoCS
Messages postés
15256
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2022
103
30 sept. 2013 à 09:27
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 ;)
0
Guix090
Messages postés
7
Date d'inscription
dimanche 16 décembre 2012
Statut
Membre
Dernière intervention
29 octobre 2013

30 sept. 2013 à 13:36
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 ");
}
}
}
0
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
30 sept. 2013 à 14:25
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
0
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
30 sept. 2013 à 14:27
Oups, cela a déjà été dit, je ne suis pas descendu assez bas sur la page désolé
0