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

Langage Java Discussion :

Un problème de if


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 66
    Points : 41
    Points
    41
    Par défaut Un problème de if
    J'ai un panneau PanneauTrajet dans lequel je veux afficher le trajet d'un robot qui est enregistré dans un fichier texte. Le trajet est une suite de déplacements caractérisés par une vitesse, une distance et une direction(gauche ou droite), voici un exemple de trajet : "105g;210d;350g;" ou 1 correspond a la vitesse du premier déplacement, 05 au temps de ce premier déplacement et g à sa direction (ici gauche),2 correspond à la vitesse du second deplacement,etc....

    Dans mon code j'extrait d'abord les instructions de déplacement pour les enregistrer dans des tableaux, un tableau vitesse ou vitesse[0] correspond à la vitesse du 1er déplacement,vitesse[1] à la vitesse du second,...un tableau temps et un tableau direction. Jusque la tout va bien

    Dans ma fonction public void paintComponent je regarde pour chaque deplacement avec un if si la direction est g ou d,mais le problème c'est que le programme ne rentre jamais dans le if

    voila mon code qui vaut mieux que de long discours:
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
     
    import java.awt.*;
    import java.util.*;
    import javax.swing.JPanel;
    import java.io.*;
    import java.lang.Integer;
     
    public class PanneauTrajet extends JPanel {
        final int LARGPAN=500;
        final int HAUTPAN=350;
        int nbrDeplacement;
        String ligne;
        int x=250;
        int y=350;
        int newx;
        int newy;
        char vit;
        char tpsDiz;
        char tpsUnit;
        char dir;
        int vitesse[]=new int[100];
        int temps[]=new int[100];
        String direction[]=new String[100];
        int nbrCaractere;
     
     
     
        public PanneauTrajet()  {
            setPreferredSize(new Dimension(LARGPAN,HAUTPAN));
            setBackground(Color.blue);
            try {
                trajet();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
     
        }
     
        public void trajet() throws IOException {
     
            BufferedReader entree=new BufferedReader(new FileReader("trajet.txt"));
            int i=0;
            int j=0;
     
            ligne=entree.readLine();
     
            if (ligne!=null) {
     
     
    ///////////////Calcul du nombre de deplacements//////////////            
                nbrCaractere=ligne.length();
                nbrDeplacement=nbrCaractere/5;
     
     //////////////Enregistrement des instructions du fichier texte dans les tableaux //////////          
                for(int a=0;a<nbrDeplacement;a++){
                    if (ligne!=null) {
                        vit=ligne.charAt(i); //extrait le premier caractère de la ligne
                        String StrVit=String.valueOf(vit); //transforme char en string
                        vitesse[j]=Integer.parseInt(StrVit); //transforme string en int
                        i++;
     
                        tpsDiz=ligne.charAt(i);
                        i++;
                        tpsUnit=ligne.charAt(i);
                        String StrTps=String.valueOf(tpsDiz)+String.valueOf(tpsUnit);
                        temps[j]=Integer.parseInt(StrTps);
                        i++;
     
                        dir=ligne.charAt(i);
                        direction[j]=String.valueOf(dir);
                        i+=2; //pour sauter le point virgule
                        j++;
                    }
                }
     
     
                repaint();
     
            }
     
            entree.close();
     
        }
     
        public void paintComponent(Graphics g){
            super.paintComponent(g);
     
            for(int i=0;i<nbrDeplacement;i++){
     
     
                if(direction[i]=="g"){
                    newx=x-(vitesse[i]*temps[i]);
     
     
                if (direction[i]=="d"){
                    newx=x+(vitesse[i]*temps[i]);
     
     
                newy=y-(vitesse[i]*temps[i]*5);
     
     
                    g.drawLine(x,y,newx,newy);
     
                    x=newx;
                    y=newy;
     
     
            }
     
        }
     
    }

  2. #2
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    A ton avis peut-etre parce qu'un String est un Object et que == sur un object regarde les adresses memoire.

    Essaye avec la methode equals, si ca rentre toujours pas alors faut que tu vérifies ton code.
    Une solution a été apporté pour résoudre votre problème alors vous aussi faites en profitez les autres grâce au tag qui se trouve tout en bas de la page....

    Merci de ne pas utiliser les messages privés pour un problème sauf si je vous l'ai explicitement demandé.

    -- Maxf1 --

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Points : 25
    Points
    25
    Par défaut
    je pense aussi que cela peut provenir d'un probleme de == à la place de equals.

    juste une remarque, vu l'indentation de ton code et tes accolades tu aurais pas aussi un probleme à ce niveau ^o)

    if(direction[i]=="g"){
    newx=x-(vitesse[i]*temps[i]);


    if (direction[i]=="d"){
    newx=x+(vitesse[i]*temps[i]);


    newy=y-(vitesse[i]*temps[i]*5);

    tu as une accolade ouvrante apres tes "if" qui ne sont fermer surement que à la fin, alors que si on regarde l'indentation et le code on pense que "newy=y-(vitesse[i]*temps[i]*5);" ne doit pas etre dans le "if(direction[i]=="d"){" verifie aussi ton code a ce niveau si c'est juste un probleme d'identation sinon tu aura d'autre probleme...

Discussions similaires

  1. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  2. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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