luumien | leonhard a écrit :
Ouhlà... Je crois que tu as commencé à écrire ton code sans vraiment savoir ce que tu voulais vraiment faire. Je suis de la vieille école, mais il me semble que commencer à écrire le programme "en français" (ou en volapuk si tu préfères c'est pas important) avant de coder c'est souvent une bonne idée.
Il n'est pas possible de corriger totalement ton programme avec ce que tu as donné, mais je peux déjà te donner une ou deux piste.
1) nbrAnalyse est déclaré comme int, donc tu ne peux pas lui assigner la valeur "oui" (ligne 11 de ton code)
2) Ligne 13 à 22. Si "saisie" est false, le code du block if sera exécuté, mais ensuite la boucle aussi. peut-être qu'il y a un petit "else" à rajouter.
3) dans la boucle "do while()", je ne vois aucune instruction qui pourrait modifier la valeur de la variable "saisie", donc soit saisie est false au début de la boucle et tu ne veux le contenu de la boucle qu'une seule fois, soit c'est saisie est "true" et tu tombes dans une boucle infinie.
4) parce que je suis un peu sadique je te donne l'instruction pour sortir d'une boucle, c'est "break", mais je ne crois pas que tu en aies besoin ici. Tu dois d'abord savoir exactement ce que tu veux faire... Et vraisemblablement que cela t'amènera à modifier le "while(true)", qui est quand même rare dans un programme desktop. Mais pour cela tu dois pouvoir changer la valeur de la variable "saisie" à l'intérieur de la boucle.
enfin moi ce que j'en dis...
|
Merci pour votre aide .
je ne dois pas utiliser break ailleurs que dans switch selon l'enonce !!!
A vrai dire au debut c'etait vraiment tres claire. Voici ce que j'avais avant de mettre les if et les do while():
1. la methode continuer :
Code :
- public static boolean continuer (String msgInvite){
- String saisie = "";
- boolean response = true;
- System.out.print(msgInvite);
-
- while (response = true) {
- if(saisie.equalsIgnoreCase("oui" ) || saisie.equalsIgnoreCase("o" )){
- return true;
- }
- if(saisie.equalsIgnoreCase("non" ) || saisie.equalsIgnoreCase("n" )
- ){
- return false;
- }
- System.out.println("ERREUR! La reponse doit etre oui, non , o ou n !" );
-
- }
- return response;
- }
|
2 . dans le main :
Code :
- presenterLogiciel();
- boolean saisie ;
-
- saisie = continuer("\nVoulez-vous traiter des combinaisons" + /// demande a l'utilisateur d'effectuer des combinaisons de numeros et codes postaux ///
- "\nde codes postaux et de numeros civiques (oui / non)?" ); /// oui = true, non = false, autre = "message d'erreur" ////
- //////////// si non, affichage du nombre d'analyses effectuees = 0, et fin de programme ///////////////////
-
- //// quand je dis oui alors je saisis et valide les donnees/////
-
- int no1 = saisirEtValiderNoCivique("\nEntrez un numero" +
- "civique pour la PREMIERE adresse : ", 1, 9999);
- String code1 = saisirEtValiderCodePostal("\nEntrez un code postal SANS" +
- " espaces pour la PREMIERE adresse", no1 );
- int no2 = saisirEtValiderNoCivique("\nEntrez un numero" +
- "civique pour la DEUXIEME adresse : ", 1, 9999);
- String code2 = saisirEtValiderCodePostal("\nEntrez un code postal SANS" +
- " espaces pour la DEUXIEME adresse", no2 );
- //////////////////////////////////////////////////////////
- //// affichage du comparatif /////
- afficherInfosComparatives (no1, code1, no2, code2);
- ////////////////////////////////////////////////////////////
- saisie = continuer("\nVoulez-vous traiter des combinaisons" + /// demande a l'utilisateur d'effectuer des combinaisons de numeros et codes postaux ///
- "\nde codes postaux et de numeros civiques (oui / non)?" ); /// oui = true, non = false, autre = "message d'erreur" ////
- ///// si oui je retourne au debut et effectue une nouvelle analyse
- ///// si non affichage du nombre d'analyses effectuees et fin de programme /////////////////
|
Voila ce que j'ai fait selon vos indications :
Code :
- presenterLogiciel();
- boolean saisie ;
- //int nbrAnalyse = 0;
- //int nbrTotalAnalyse = 0;
- saisie = continuer("\nVoulez-vous traiter des combinaisons" +
- "\nde codes postaux et de numeros civiques (oui / non)?" );
- //nbrAnalyse = "oui" ; /// quelque chose comme ca !!!!
- if (saisie == false){
- /// affiche le nombre de "oui" ou "o" saisis/////
- ///nbrTotalAnalyse = nbrAnalyse +1;
- //////
- ///System.out.println("Nombre d'analyses effectuees:" + nbrAnalyse);
- System.out.println("\nF I N N O R M A L E D U P R O G R A M M E" );
- }else{
- do {
- int no1 = saisirEtValiderNoCivique("\nEntrez un numero" +
- "civique pour la PREMIERE adresse : ", 1, 9999);
- String code1 = saisirEtValiderCodePostal("\nEntrez un code postal SANS" +
- " espaces pour la PREMIERE adresse", no1 );
- int no2 = saisirEtValiderNoCivique("\nEntrez un numero" +
- "civique pour la DEUXIEME adresse : ", 1, 9999);
- String code2 = saisirEtValiderCodePostal("\nEntrez un code postal SANS" +
- " espaces pour la DEUXIEME adresse", no2 );
- afficherInfosComparatives (no1, code1, no2, code2);
- } while (true);
- }
- //nbrTotalAnalyse = nbrAnalyse +1;
- //System.out.println("Nombre d'analyses effectuees:" + nbrAnalyse);
|
Pourriez-vous m'indiquer comment sortie de la boucle while(true) et revenir sur le message invite.
Pourriez-vous aussi me m'indiquer comme faire pour l'affichage du nombre analyses effectuees.
Merci bcp.
Cordialement. |