IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Problème avec if else


Sujet :

avec Java

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut Problème avec if else
    Bonjour,
    mon prg marche premier parti seulement, restant marche pas,
    je m'explique
    voilà but de mon prg est:
    au début on donne pourcentage de 4 candidats:
    lorsqu l'un des candidats obtient plus de 50%, il est élu dès le premier tour.
    en cas de deuxième tour, peuvent participer uniquement les candidats ayant obtenu au moins 12.5% au premier tour.
    mon prg doit traiter uniquement le premier candidat, veut dire A,
    il dira s'il est élu,battu,ballottage favorable,ballottage défavorable
    parti de ballotage favorable et défavorable marche pas
    quelqu'un peut m'aider svp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    import java.util.Scanner;
    public class Testing
    {
     public static void main(String[] args)
     {
      char reponse='0';
      do{
      System.out.println("Entrez score A:");
      Scanner valeur=new Scanner(System.in);
      int A=valeur.nextInt();
      System.out.println("Entrez score B:");
      int B=valeur.nextInt();
      System.out.println("Entrez score C:");
      int C=valeur.nextInt();
      System.out.println("Entrez score D:");
      int D=valeur.nextInt();
     
      if(A>50)
      {
       System.out.println("Elu au premier tour A:");
      }
      else if((B>50||C>50||D>50)||(A>=12))
      {
       System.out.println("Battu, éliminé, sorti!!!:");
      }
      else if(A>=B & A>=C & A>=D )
      {
       System.out.println("Ballotage favorable:");
      }
      else
      {
       System.out.println("Ballotage défavorable:");
      }
      System.out.println("Voulez vous reessayer,(O/N");
        Scanner sc=new Scanner(System.in);
        reponse=sc.nextLine().charAt(0);
     }
     while(reponse=='O');
      System.out.println("Au revoir...");
     }
     }

  2. #2
    Membre éclairé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Par défaut
    Salut
    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      else if((A>=B) &&(A>=C) && (A>=D) )

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    L'opérateur et logique c'est && en Java. & est un opérateur binaire de combinaison (fait un et bit à bit). Il se trouve que pour des booleéns ça donne la même chose, forcément.

    Le problème est plutôt dans le ou (A>=12) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     else if((B>50||C>50||D>50)||(A>=12))
    Si B=0, C=0, D=0 et A=100, A est éléminé parce que A>12 !

    Le test d'élimination est "peuvent participer uniquement les candidats ayant obtenu au moins 12.5% au premier tour.", donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( A<=12 ) {
        // éliminé !
    }
    A noter que des floats seraient plus pratiques pour gérer 12.5 % !
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 58
    Par défaut
    Bonjour,


    Essai avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    if(A>50)
      {
       System.out.println("Elu au premier tour A:");
      }
      else if((B>50||C>50||D>50) && (A<B || A<C || A<D))
      {
       System.out.println("Battu, éliminé, sorti!!!:");
      }
     
      if(A>=B &&  A>=C && A>=D && A>50)
      {
       System.out.println("Ballotage favorable:");
      }
      else
      {
       System.out.println("Ballotage défavorable:");
      }

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par lytog Voir le message
    Bonjour,


    Essai avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    if(A>50)
      {
       System.out.println("Elu au premier tour A:");
      }
      else if((B>50||C>50||D>50) && (A<B || A<C || A<D))
      {
       System.out.println("Battu, éliminé, sorti!!!:");
      }
     
      if(A>=B &&  A>=C && A>=D && A>50)
      {
       System.out.println("Ballotage favorable:");
      }
      else
      {
       System.out.println("Ballotage défavorable:");
      }
    1. Où est la notion de 12.5 % ?
    2. Le premier test implique que si A à plus de 50, il est élu. Pourquoi en serait-il autrement pour les trois autres candidats ? A moins qu'on soit dans une république bananière. Donc à quoi sert la deuxième partie du second if (if((B>50||C>50||D>50) && (A<B || A<C || A<D))) ? En plus d'être redondante avec le premier if (si A<=50 et que B (ou C, ou D)>50, comment A ne pourrait-il pas être inférieur à B (certes il peut être égal, mais ça peut s'écrire nettement plus simplement) ?
    3. Quand au troisième if (if(A>=B && A>=C && A>=D && A>50)), comment ne pourrait-il pas être vrai ? Sauf erreur de saisie ou bourrage d'urne, si A a plus de 50, les trois autres se partagent les 50% restant. Donc au pire, l'un d'eux a 50% et les 2 autres 0%, donc les trois autres sont forcément inférieurs ou égaux, donc les trois premières conditions sont forcément vraies.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 58
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    1. Où est la notion de 12.5 % ?
    2. Le premier test implique que si A à plus de 50, il est élu. Pourquoi en serait-il autrement pour les trois autres candidats ? A moins qu'on soit dans une république bananière. Donc à quoi sert la deuxième partie du second if (if((B>50||C>50||D>50) && (A<B || A<C || A<D))) ? En plus d'être redondante avec le premier if (si A<=50 et que B (ou C, ou D)>50, comment A ne pourrait-il pas être inférieur à B (certes il peut être égal, mais ça peut s'écrire nettement plus simplement) ?
    3. Quand au troisième if (if(A>=B && A>=C && A>=D && A>50)), comment ne pourrait-il pas être vrai ? Sauf erreur de saisie ou bourrage d'urne, si A a plus de 50, les trois autres se partagent les 50% restant. Donc au pire, l'un d'eux a 50% et les 2 autres 0%, donc les trois autres sont forcément inférieurs ou égaux, donc les trois premières conditions sont forcément vraies.

    la deuxième partie du second if (if((B>50||C>50||D>50) && (A<B || A<C || A<D))) ne sert à rien comme vous l'avez dit c'est une redondance. Par contre if (if(A>=B && A>=C && A>=D && A>50)) A peut être supérieure à B C et D et ne peut pas avoir plus de 50. C'est un autre if que j'ai fait. Ce qu'il a fait favorable et défavorable ne se réaliserons jamais c'est que des if else if jusqu'au bout, une seule condition sera traitée.

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par lytog Voir le message
    c'est que des if else if jusqu'au bout
    Non : il y a un if / else if, suivi d'un if / else. Les 2 tests des 2 if sont effectués, dans tous les cas. El le premier if teste A>=50, et le second aussi : (A>=B && A>=C && A>=D && A>50) et cette condition est toujours vraie, si A + B + C + D = 100 (et A, B, C et D >=0).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 58
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Non : il y a un if / else if, suivi d'un if / else. Les 2 tests des 2 if sont effectués, dans tous les cas. El le premier if teste A>=50, et le second aussi : (A>=B && A>=C && A>=D && A>50) et cette condition est toujours vraie, si A + B + C + D = 100.

    Non y a un if / else if/ else if / else.
    C'est le code que j'ai modifié j'ai mis if / else if, suivi d'un if / else.
    Normalement je devais mettre if / else , suivi d'un if / else.

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par lytog Voir le message
    Non y a un if / else if/ else if / else.
    C'est le code que j'ai modifié j'ai mis if / else if, suivi d'un if / else.
    Normalement je devais mettre if / else , suivi d'un if / else.
    Je parle bien de ton code, cité dans ma réponse Au passage, teste-le, ton code, avec A = 75, B=10, C=10 et D=5, par exemple.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #10
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 58
    Par défaut
    Citation Envoyé par lytog Voir le message
    Non y a un if / else if/ else if / else.
    C'est le code que j'ai modifié j'ai mis if / else if, suivi d'un if / else.
    Normalement je devais mettre if / else , suivi d'un if / else.
    Si le premier if /else teste A>50 ou non le deuxième if/else ne sait pas le résultat du premier if else.
    Il faut qu'on vérifie si A>50, on peut avoir A=40, D+B+C=60, à moins qu'on dit que A peut gagner s'il est supérieur aux autres.

  11. #11
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par lytog Voir le message
    Si le premier if /else teste A>50 ou non le deuxième if/else ne sait pas le résultat du premier if else.
    Il faut qu'on vérifie si A>50, on peut avoir A=40, D+B+C=60,
    Non ! Si A>50, A ne peut pas être égal à 40 !!!

    Citation Envoyé par lytog Voir le message
    à moins qu'on dit que A peut gagner s'il est supérieur aux autres.
    C'est un peu le principe dans une élection, mais peu importe ici. Je dis simplement que la condition est toujours vraie si A>50 !!!

    Or si A>50, d'après le premier test A gagne l'élection. Si tu testes ton programme avec A=75, B=10, C=10 et D=5, tu obtiens :

    Elu au premier tour A:
    Ballotage favorable:
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #12
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    merci beaucoup
    j'ai corrigé mon erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    char reponse='0';
    		do{
    		System.out.println("Entrez score A:");
    		Scanner valeur=new Scanner(System.in);
    		double A=valeur.nextDouble();
    		System.out.println("Entrez score B:");
    		double B=valeur.nextDouble();
    		System.out.println("Entrez score C:");
    		double C=valeur.nextDouble();
    		System.out.println("Entrez score D:");
    		double D=valeur.nextDouble();
     
    		if(A>50)
    		{
    			System.out.println("Elu au premier tour A:");
    		}
    		else if((B>50||C>50||D>50))
    		{
    			System.out.println("Battu, éliminé, sorti!!!:");
    		}
    merci beaucoup à vos aides, c' étaient précieux

  13. #13
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    c'est vrai on a oublié
    "le candidats ayant obtenu au moins 12,5% des voix au premier tour,qui va 2eme tour"
    il faut le placer dans la quel if?
    qu'est ce que vous en pensez?

  14. #14
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if(A>50) {
    			System.out.println("Elu au premier tour A:");
    } else if ( A>12.5  && (B<=50 && C<=50 && D<=50) ) { // Si le candidate a fait un score non éliminable et que les autres n'ont pas directement gagné)  -,  on suppose que le total fait bien 100 (et qu'on a pas de votes blancs comptabilisés) : parce que A pourrait avoir 10%, et les 3 autres 5 % ! qui gagnerait dans ce cas ? en théorie l'élection serait invalidé dans ce cas - cas qu'on pourrait traiter dès le début (test de validité du vote))
        if ( (A>B && B>12.5) || (A>C && C>12.5) || (A>D && D>12.5) ) { // si le score de A est supérieur à au moins un autre candidat non éliminé
            System.out.println("Ballottage favorable");
        }
        else {
            System.out.println("Ballottage défavorable");
        }
    } else { // dans tous les autres cas, il est éliminé
    			System.out.println("Battu, éliminé, sorti!!!:");
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #15
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec les "else if"
    Par ookki dans le forum C++
    Réponses: 5
    Dernier message: 22/06/2008, 18h25
  2. Problème avec if ... else. ..
    Par XeoN! dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 25/05/2008, 22h48
  3. problème avec la "ELSE"
    Par amazircool dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 17/12/2007, 14h23
  4. problème avec if..else..endif
    Par casavba dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/08/2007, 11h14
  5. Problèmes avec des else if
    Par Kr00pS dans le forum C
    Réponses: 2
    Dernier message: 15/04/2006, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo