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 :

Problème de création d'objet


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9
    Par défaut Problème de création d'objet
    Bonjour ^^,

    Je vous expose mon problème : Je n'arrive pas a accéder a un tableau d'objet que j'ai crée, voici le code des fonctions puis de l'objet. Peut-être pourriez vous me venir en aide ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    m.props = new TileProp[m.nbtilesX*m.nbtilesY]; //j'ai vérifié la taille, elle est de 88
     
    SDLRect testRect = new SDLRect();
                            testRect.setWidth(m.LARGEUR_TILE);
                            testRect.setHeight(m.HAUTEUR_TILE);
                            testRect.setX((short)(i*m.LARGEUR_TILE));
                            testRect.setY((short)(j*m.HAUTEUR_TILE));
                            System.out.println("test1");//Le code génère une Java.NullPointerException ici
                            m.props[0].setR(testRect);
                            System.out.println("test2");//
                            m.props[0].setMur(0);
                            if (mur[0].equals("mur")) m.props[0].setMur(1);
    Puis l'objet :


    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
    public class TileProp {
     
        private SDLRect R;
        private int mur;
     
        public TileProp()
        {
            R = new SDLRect();
            mur = 0;
        }
     
        public SDLRect getR()
        {
            return R;
        }
     
        public int getMur()
        {
            return mur;
        }
     
        public void setR(SDLRect rectangle)
        {
            R = rectangle;
        }
     
        public void setMur(int newMur)
        {
            mur = newMur;
        }
     
    }
    Merci à vous et bonne fête de Noël

    Amicalement

    rudelune

    PS: J'ai rajouté les this.R et this.mur, ils ne sont pas la cause du problème

    Edit : Voici mon vrai 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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    public static void chargerMap_tileset(File F, Map m)
        {
            int numtile, i, j;
            try {  
                InputStream ips=new FileInputStream(F);
                InputStreamReader ipsr=new InputStreamReader(ips);
                BufferedReader br=new BufferedReader(ipsr);
                int lignes = 0;
                while (br.readLine() !=null)
                {
                    lignes +=1;
                }
     
                br.close();
     
     
                String[] level = new String[lignes];
     
                InputStream ips2=new FileInputStream(F);
                InputStreamReader ipsr2=new InputStreamReader(ips2);
                BufferedReader br2=new BufferedReader(ipsr2);
                for (i=0; i<lignes; i++)
                {
                    level[i] = br2.readLine();
                }
     
                br2.close();
     
     
                if (level[0].equals("#tileset"))
                {
                    m.tileset = loadImage32("ressources/tileset/"+level[1]);
                    m.nbtilesX = Integer.parseInt((level[2].split(" "))[0]);
                    m.nbtilesY = Integer.parseInt((level[2].split(" "))[1]);
                    m.LARGEUR_TILE = m.tileset.getWidth()/m.nbtilesX;
                    m.HAUTEUR_TILE = m.tileset.getHeight()/m.nbtilesY;
     
                    m.props = new TileProp[m.nbtilesX*m.nbtilesY];
     
     
     
                    int tile = 3;
                    while (level[tile].contains("tile")) tile++;
                    String[] mur = new String[tile-3];
                    for (i=3, j=0; i<tile; i++, j++)
                    {
                        mur[j] = (level[i].split(": "))[1];
                    }
     
     
                    for(j=0,numtile=0;j<m.nbtilesY;j++)
                    {
                        for(i=0;i<m.nbtilesX;i++,numtile++)
                        {
                            ////////////////////////////////////////////////////////////////
                            SDLRect testRect = new SDLRect();
                            testRect.setWidth(m.LARGEUR_TILE);
                            testRect.setHeight(m.HAUTEUR_TILE);
                            testRect.setX((short)(i*m.LARGEUR_TILE));
                            testRect.setY((short)(j*m.HAUTEUR_TILE));
                            System.out.println("test1");//
                            m.props[numtile].setR(testRect);
                            System.out.println("test2");//
                            m.props[numtile].setMur(0);
                            if (mur[numtile].equals("mur")) m.props[numtile].setMur(1);
                        }
                    }
     
     
                }
     
     
            }catch (Exception e){
                System.out.println(e.toString());
            }
        }

  2. #2
    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,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     m.props = new TileProp[m.nbtilesX*m.nbtilesY];
    crée le tableaux m.props (lui donne une dimension), mais n'affecte aucune instance aux "cases" de ce tableau, donc tu dois obtenir une NullPointerException quand tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      m.props[numtile].setR(testRect);

    Pour mettre une instance dans une case de ce tableau, il te faudra faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m.props[numtile] = new TileProp();

    Accessoirement, évites de lire 2 fois ton fichier, une fois pour compter les lignes, une fois pour remplir un tableau !!! Utilises une ArrayList, qui pourra être remplie en une passe. Les tableaux sont à proscrire pour ce qui est variable (Il y en a même qui tendrait à proscrire les tableaux dans tous les cas ).
    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.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9
    Par défaut
    J'ai résolu mon problème, en effet quand ont crée un tableau, toutes les valeurs sont à null, il faut donc faire une boucle qui les remplis ^^
    Amicalement
    rudelune

    Edit: Excusez moi j'ai résolus mon problème avant que ça ne réactualise la page, merci beaucoup à vous et bonnes fâtes

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

Discussions similaires

  1. [Débutant] Problème de création d'objet (ActiveX))
    Par Mat32 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 02/06/2011, 15h00
  2. Problème de création d'objet
    Par Maldus dans le forum Débuter
    Réponses: 2
    Dernier message: 08/12/2008, 15h37
  3. Vbs et html problème de création d'objet
    Par Picco dans le forum VBScript
    Réponses: 0
    Dernier message: 06/10/2008, 14h48
  4. Problème de création d'objet
    Par Gouyon dans le forum Delphi
    Réponses: 2
    Dernier message: 15/05/2007, 13h20
  5. Problème de création d'objets
    Par gids01 dans le forum Langage
    Réponses: 3
    Dernier message: 24/10/2006, 10h42

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