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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
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