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 début/arrêt compteur


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Problème début/arrêt compteur
    Bonjour à tous.

    J'ai un problème avec les compteurs qui se trouvent dans mon code, j'aimerais que le compteur1 s'arrête quand il arrive à 6, que le compteur2 commence a compter quand le compteur1 est à 6, qu'il s'arrête lui aussi à 6 et enfin la même chose pour le compteur3 qui s'arrêtera aussi à 6.

    J'ai beau chercher sur internet, utiliser if, while, je ne trouve pas...

    voici mon code :

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    public class compteur extends JFrame
    {
        private JFrame compteur;
        JButton compter = new JButton("compter");
        JLabel set1j1 = new JLabel("---");
        JLabel set2j1 = new JLabel("---");
        JLabel set3j1 = new JLabel("---");
        private int compteur1 = 0;
        private int compteur2 = 0;
        private int compteur3 = 0;
        
         public compteur()
        {
            JPanel jpTableau = new JPanel();
            jpTableau.setLayout(new BorderLayout());
            
            JPanel label = new JPanel();
            label.setLayout(new GridLayout(1,3));
            
            label.add(set1j1);
            label.add(set2j1);
            label.add(set3j1);
            
            jpTableau.add(label,BorderLayout.NORTH);
            
            JPanel bouton = new JPanel();
            bouton.setLayout(new GridLayout(1,1));
            
                ActionListener sp=new ActionListener(){
                public void actionPerformed(ActionEvent e)
                {
                    
                    compteur1++;
                    set1j1.removeAll();
                    set1j1.setText(""+compteur1);
                    set1j1.validate();
                        if(compteur1 == 6)
                            {
                                
                                compteur2++;
                                set2j1.removeAll();
                                set2j1.setText(""+compteur2);
                                set2j1.validate();
                            }
                    
                    
                }
                };
                compter.addActionListener(sp);
                bouton.add(compter);
                
                jpTableau.add(bouton,BorderLayout.SOUTH);
                
                compteur = new JFrame("compteur");
                compteur.setContentPane(jpTableau);
                compteur.pack();
                compteur.setResizable(true);        
                compteur.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                compteur.setVisible(true);
                
            }
        }
    Merci d'avance.

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour,

    je pense que des simples if devraient faire l'affaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (compteur1 != 6) {
        compteur1++;
    } else if (compteur2 != 6) {
        compteur2++;
    } else if (compteur3 != 6) {
        compteur3++;
    }

  3. #3
    Membre actif
    Homme Profil pro
    Consultant BigData
    Inscrit en
    Juillet 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant BigData

    Informations forums :
    Inscription : Juillet 2009
    Messages : 129
    Points : 280
    Points
    280
    Par défaut
    A mon avis, tu as un simple problème d'algorithmique dans ton code Je pense que tu pourrais utiliser un algo plus comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while(compteur1<6 && compteur2<6 && compteur3<6) {
      if(compteur1 >= 6 && compteur2 >= 6) {
        comtpeur3++;
      } else if (compteur1 >= 6) {
        compteur2++;
      } else {
        compteur1++;
      }
    }
    A toi de mettre le code pour adapter la vue là dedans

    Edit : @Deaf : il manque le fait que le compteur n commence à s'incrémenter quand le n-1 est à 6 et pas avant.

  4. #4
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Dans la mesure où j'enchaine les if avec du else, non, ça doit passer.

    Les autres if ne sont testés que si tous les précédents sont faux et donc que les compteurs précédents sont tous à 6.

    Après, j'ai pas testé, mais ça m'a l'air correct

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci à vous 2 pour votre aide.

    Juste pour dire que le code de Oussapik ne marchait pas il affichait directement 6 au compteur 1 et puis rien dans les autres. Mais le code de Deaf marche nikel

    Encore merci

  6. #6
    Membre actif
    Homme Profil pro
    Consultant BigData
    Inscrit en
    Juillet 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant BigData

    Informations forums :
    Inscription : Juillet 2009
    Messages : 129
    Points : 280
    Points
    280
    Par défaut
    Mea Culpa alors, j'ai en effet fait une tite faute d'algo :s on va mettre ça sur le dos de la fatigue

    J'aurais du tester mon code avant ... dans la condition du while, c'était des || et pas de &&. Et j'ai fait une faute de frappe à compteur3 là où je l'incrémente. bref, désolé pour la réponse bancale.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/03/2007, 17h03
  2. Problème d'arrêt de Windows
    Par Invité dans le forum C++Builder
    Réponses: 8
    Dernier message: 16/11/2006, 16h44
  3. Réponses: 7
    Dernier message: 18/09/2006, 22h01
  4. Réponses: 2
    Dernier message: 20/03/2006, 15h05
  5. [Debug]Problème d'arrêt
    Par le Daoud dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 02/06/2005, 20h18

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