Saisie controlée [Résolu]

Guix090 7 Messages postés dimanche 16 décembre 2012Date d'inscription 29 octobre 2013 Dernière intervention - 29 sept. 2013 à 18:46 - Dernière réponse : cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention
- 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.
Afficher la suite 

5 réponses

Répondre au sujet
KX 15369 Messages postés samedi 31 mai 2008Date d'inscriptionContributeurStatut 22 avril 2018 Dernière intervention - 29 sept. 2013 à 19:00
0
Utile
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
BunoCS 13764 Messages postés lundi 11 juillet 2005Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 30 sept. 2013 à 09:27
0
Utile
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
Guix090 7 Messages postés dimanche 16 décembre 2012Date d'inscription 29 octobre 2013 Dernière intervention - 30 sept. 2013 à 13:36
0
Utile
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
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 30 sept. 2013 à 14:25
0
Utile
1
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 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 30 sept. 2013 à 14:27
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.