Guix090
Messages postés7Date d'inscriptiondimanche 16 décembre 2012StatutMembreDernière intervention29 octobre 2013
-
Modifié par BunoCS le 30/09/2013 à 09:26
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 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 ?
KX
Messages postés16722Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention25 septembre 2023126 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
BunoCS
Messages postés15394Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention29 septembre 2023102 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 ;)
Guix090
Messages postés7Date d'inscriptiondimanche 16 décembre 2012StatutMembreDernière intervention29 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 ");
}
}
}
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020370 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
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020370 30 sept. 2013 à 14:27
Oups, cela a déjà été dit, je ne suis pas descendu assez bas sur la page désolé