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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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.

+ 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