Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1152 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  A l'aide !!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

A l'aide !!!

n°2307858
luumien
Posté le 19-11-2017 à 00:30:57  profilanswer
 

Bonjour,
 
S'il vous plait,
 
Pourriez vous m'aider a resoudre ce probleme, je tourne en rond depuis trois jours. Comment faire pour sortir de cette boucle infernal et d'arriver au messge de fin de programme avec affichage de nombre total de saisies de "oui".
 
Voici mon code.
 

Code :
  1. public static void main (String[] params) {
  2.         presenterLogiciel();
  3.         boolean saisie = true  ;
  4.         int nbrAnalyse = 0;
  5.         int nbrTotalAnalyse = 0;
  6.         saisie = continuer("\nVoulez-vous traiter des combinaisons" +
  7.             "\nde codes postaux et de numeros civiques (oui / non)?" );
  8.         nbrAnalyse = "oui" ; /// quelque chose comme ca !!!!
  9.         if (saisie == false){
  10.             /// affiche le nombre de "oui" ou "o" saisis/////
  11.             nbrTotalAnalyse = nbrAnalyse +1;
  12.             //////
  13.             System.out.println("Nombre d'analyses effectuees:" + nbrAnalyse);
  14.             System.out.println("\nF I N N O R M A L E D U P R O G R A M M E" );
  15.         }
  16.         do {
  17.             int no1 = saisirEtValiderNoCivique("\nEntrez un numero" +
  18.                     "civique pour la PREMIERE adresse : ", 1, 9999);
  19.             String code1 = saisirEtValiderCodePostal("\nEntrez un code postal SANS" +
  20.                     " espaces pour la PREMIERE adresse", no1 );
  21.             int no2 = saisirEtValiderNoCivique("\nEntrez un numero" +
  22.                     "civique pour la DEUXIEME adresse : ", 1, 9999);
  23.             String code2 = saisirEtValiderCodePostal("\nEntrez un code postal SANS" +
  24.                     " espaces pour la DEUXIEME adresse", no2 );
  25.             afficherInfosComparatives (no1, code1, no2, code2);
  26.             if (saisie == false){
  27.                 //// get the hell out of this boucle /////
  28.             }
  29.         } while (true);
  30.         nbrTotalAnalyse = nbrAnalyse +1;
  31.         System.out.println("Nombre d'analyses effectuees:" + nbrTotalAnalyse);
  32.         System.out.println("\nF I N N O R M A L E D U P R O G R A M M E" );
  33.     } // main


 
Merci pour votre aide tres precieuse.
 
Cordialement.

Message cité 1 fois
Message édité par luumien le 19-11-2017 à 02:58:40
mood
Publicité
Posté le 19-11-2017 à 00:30:57  profilanswer
 

n°2307859
leonhard
Posté le 19-11-2017 à 07:27:53  profilanswer
 

luumien a écrit :

Bonjour,
 
S'il vous plait,
 
Pourriez vous m'aider a resoudre ce probleme, je tourne en rond depuis trois jours. Comment faire pour sortir de cette boucle infernal et d'arriver au messge de fin de programme avec affichage de nombre total de saisies de "oui".
 
Voici mon code.
 

Code :
  1. public static void main (String[] params) {
  2.         presenterLogiciel();
  3.         boolean saisie = true  ;
  4.         int nbrAnalyse = 0;
  5.         int nbrTotalAnalyse = 0;
  6.         saisie = continuer("\nVoulez-vous traiter des combinaisons" +
  7.             "\nde codes postaux et de numeros civiques (oui / non)?" );
  8.         nbrAnalyse = "oui" ; /// quelque chose comme ca !!!!
  9.         if (saisie == false){
  10.             /// affiche le nombre de "oui" ou "o" saisis/////
  11.             nbrTotalAnalyse = nbrAnalyse +1;
  12.             //////
  13.             System.out.println("Nombre d'analyses effectuees:" + nbrAnalyse);
  14.             System.out.println("\nF I N N O R M A L E D U P R O G R A M M E" );
  15.         }
  16.         do {
  17.             int no1 = saisirEtValiderNoCivique("\nEntrez un numero" +
  18.                     "civique pour la PREMIERE adresse : ", 1, 9999);
  19.             String code1 = saisirEtValiderCodePostal("\nEntrez un code postal SANS" +
  20.                     " espaces pour la PREMIERE adresse", no1 );
  21.             int no2 = saisirEtValiderNoCivique("\nEntrez un numero" +
  22.                     "civique pour la DEUXIEME adresse : ", 1, 9999);
  23.             String code2 = saisirEtValiderCodePostal("\nEntrez un code postal SANS" +
  24.                     " espaces pour la DEUXIEME adresse", no2 );
  25.             afficherInfosComparatives (no1, code1, no2, code2);
  26.             if (saisie == false){
  27.                 //// get the hell out of this boucle /////
  28.             }
  29.         } while (true);
  30.         nbrTotalAnalyse = nbrAnalyse +1;
  31.         System.out.println("Nombre d'analyses effectuees:" + nbrTotalAnalyse);
  32.         System.out.println("\nF I N N O R M A L E D U P R O G R A M M E" );
  33.     } // main


 
Merci pour votre aide tres precieuse.
 
Cordialement.


 
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...  
 

n°2307871
luumien
Posté le 19-11-2017 à 15:21:45  profilanswer
 

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 :
  1. public static boolean continuer (String msgInvite){
  2.         String saisie = ""; 
  3.         boolean response = true;
  4.         System.out.print(msgInvite);
  5.        
  6.         while (response = true) {
  7.             if(saisie.equalsIgnoreCase("oui" ) || saisie.equalsIgnoreCase("o" )){
  8.                 return true;
  9.             }
  10.             if(saisie.equalsIgnoreCase("non" ) || saisie.equalsIgnoreCase("n" )
  11.             ){
  12.                 return false;
  13.             }
  14.             System.out.println("ERREUR! La reponse doit etre oui, non , o ou n !" );
  15.          
  16.         }
  17.         return response;
  18.     }


 
 
2 . dans le main :
 

Code :
  1. presenterLogiciel();
  2.         boolean saisie   ;
  3.        
  4.         saisie = continuer("\nVoulez-vous traiter des combinaisons" + /// demande a l'utilisateur d'effectuer des combinaisons de numeros et codes postaux ///
  5.             "\nde codes postaux et de numeros civiques (oui / non)?" );  /// oui = true, non  = false, autre = "message d'erreur" ////
  6.         //////////// si non, affichage du nombre d'analyses effectuees = 0, et fin de programme ///////////////////
  7.        
  8.          //// quand je dis oui alors je saisis et valide les donnees/////
  9.        
  10.             int no1 = saisirEtValiderNoCivique("\nEntrez un numero" +
  11.                     "civique pour la PREMIERE adresse : ", 1, 9999);
  12.             String code1 = saisirEtValiderCodePostal("\nEntrez un code postal SANS" +
  13.                     " espaces pour la PREMIERE adresse", no1 );
  14.             int no2 = saisirEtValiderNoCivique("\nEntrez un numero" +
  15.                     "civique pour la DEUXIEME adresse : ", 1, 9999);
  16.             String code2 = saisirEtValiderCodePostal("\nEntrez un code postal SANS" +
  17.                     " espaces pour la DEUXIEME adresse", no2 );
  18.           //////////////////////////////////////////////////////////
  19.           //// affichage du comparatif /////
  20.             afficherInfosComparatives (no1, code1, no2, code2);
  21.          ////////////////////////////////////////////////////////////
  22.              saisie = continuer("\nVoulez-vous traiter des combinaisons" + /// demande a l'utilisateur d'effectuer des combinaisons de numeros et codes postaux ///
  23.             "\nde codes postaux et de numeros civiques (oui / non)?" );  /// oui = true, non  = false, autre = "message d'erreur" ////
  24.             ///// si oui je retourne au  debut et effectue une nouvelle analyse  
  25.            ///// si non affichage du nombre d'analyses effectuees et fin de programme /////////////////


 
Voila ce que j'ai fait selon vos indications :
 

Code :
  1. presenterLogiciel();
  2.         boolean saisie   ;
  3.         //int nbrAnalyse = 0;
  4.         //int nbrTotalAnalyse = 0;
  5.         saisie = continuer("\nVoulez-vous traiter des combinaisons" +
  6.             "\nde codes postaux et de numeros civiques (oui / non)?" );
  7.         //nbrAnalyse = "oui" ; /// quelque chose comme ca !!!!
  8.         if (saisie == false){
  9.             /// affiche le nombre de "oui" ou "o" saisis/////
  10.             ///nbrTotalAnalyse = nbrAnalyse +1;
  11.             //////
  12.             ///System.out.println("Nombre d'analyses effectuees:" + nbrAnalyse);
  13.             System.out.println("\nF I N N O R M A L E D U P R O G R A M M E" );
  14.         }else{
  15.             do {
  16.                 int no1 = saisirEtValiderNoCivique("\nEntrez un numero" +
  17.                         "civique pour la PREMIERE adresse : ", 1, 9999);
  18.                 String code1 = saisirEtValiderCodePostal("\nEntrez un code postal SANS" +
  19.                         " espaces pour la PREMIERE adresse", no1 );
  20.                 int no2 = saisirEtValiderNoCivique("\nEntrez un numero" +
  21.                         "civique pour la DEUXIEME adresse : ", 1, 9999);
  22.                 String code2 = saisirEtValiderCodePostal("\nEntrez un code postal SANS" +
  23.                         " espaces pour la DEUXIEME adresse", no2 );
  24.                 afficherInfosComparatives (no1, code1, no2, code2);
  25.             } while (true);
  26.         }
  27.         //nbrTotalAnalyse = nbrAnalyse +1;
  28.         //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.

Message cité 1 fois
Message édité par luumien le 19-11-2017 à 16:42:08
n°2307881
leonhard
Posté le 20-11-2017 à 07:44:15  profilanswer
 

luumien a écrit :


 
[...]

Code :
  1. public static boolean continuer (String msgInvite){
  2.         String saisie = ""; 
  3.         boolean response = true;
  4.         System.out.print(msgInvite);
  5.        
  6.         while (response = true) {
  7.             if(saisie.equalsIgnoreCase("oui" ) || saisie.equalsIgnoreCase("o" )){
  8.                 return true;
  9.             }
  10.             if(saisie.equalsIgnoreCase("non" ) || saisie.equalsIgnoreCase("n" )
  11.             ){
  12.                 return false;
  13.             }
  14.             System.out.println("ERREUR! La reponse doit etre oui, non , o ou n !" );
  15.          
  16.         }
  17.         return response;
  18.     }


 
 
[...]


 
Es-tu sûr de comprendre comment fonctionne cette simple méthode ? Juste 2 remarques:
1) Dans la programmation structurée, chaque fonction (méthode) doit avoir un seul point d'entrée et un seul point de sortie, donc un seul return.
2) Pour une instruction "while" il faut donner une expression booléenne qui ne soit pas une assignation !  (remarque pour ceusses qui ont un peu d'expérience: oui je sais ce que vaut l'évaluation d'un assignation booléenne, mais ce n'est pas une bonne idée ici).
 
Le code que tu donnes ici ne peut pas fonctionner, il est incomplet ! (voir par exemple la valeur de la variable "saisie"!)

n°2307904
Lt Ripley
Ils ont tout niqué
Posté le 20-11-2017 à 16:22:21  profilanswer
 

Luumien es tu allé voir ton premier topic, j'y ai posté 2 codes :  http://forum.hardware.fr/hfr/Progr [...] m#t2307855

n°2307933
luumien
Posté le 21-11-2017 à 16:08:05  profilanswer
 

Merci pour votre aide !!!
 
J'ai reussi a resoudre le probleme dans le main.  
 
Cordialement.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  A l'aide !!!

 

Sujets relatifs
[Excel VBA]Fonction Rank ignorer cellule vide et passer à la suivante[Résolu] A l'aide ! (C++ IA)
A l'aide !! template hastable et iterateurs [Résolu][C] A l'aide je ne comprends rien a ce programme
A l'aide!AIDE A LA PROGRAMMATION
A supprimerA l'aide !
Aide vba : Comparer deux colonnes A et B et ajouter à B ce qu'il manquA l'aide je seche sur un tableau
Plus de sujets relatifs à : A l'aide !!!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR