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 avec null


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Points : 11
    Points
    11
    Par défaut problème avec null
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    System.out.println(cages[i][0]);
    	System.out.println(new String[] {"carnivore"});
    	System.out.println(new Cage(Integer.parseInt(cages[i][0]), new String[] {"carnivore"}));
    	System.out.println(zoo[i]);
    	zoo[i] = new Cage(Integer.parseInt(cages[i][0]), new String[] {"carnivore"});
            System.out.println(zoo[i]);
    Ce code (qui utilise d'autres classes que j'ai créées) affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    3
    [Ljava.lang.String;@530daa
    Cage@a62fc3
    null 
    null
    Je ne comprends pas pourquoi j'obtiens le deuxième null alors que new Cage(...) n'est pas null !

    NB : cages est un tableau à deux dimensions.
    Cage est une classe avec un constructeur prenant un entier et un tableau de String.

    Merci pour votre aide !

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Points : 295
    Points
    295
    Par défaut
    à priori c'est impossible ce qui t'arrive

    sinon met plus de code parceque là je crois que c un truc tordu !!

  3. #3
    Membre actif Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Points : 205
    Points
    205
    Par défaut
    Bonjour,

    Je vois qu'une seule possibilité. Lorsque tu appel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zoo[i] = new Cage(Integer.parseInt(cages[i][0]), new String[] {"carnivore"});
    une exception es levée dans new Cage() alors zoo[i] reste null.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Points : 11
    Points
    11
    Par défaut plus de code
    Bonjour

    merci pour vos réponses. Pour moi, ça me parait aussi impossible mais l'ordinateur ne ment pas !
    Je ne pense pas que new Cage(...) génère une erreur puisque la ligne
    new Cage(...) crée bien une cage. c'est vraiment bizarre.
    Je mets un peu plus de code :

    Constructeur de la classe Zoo
    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
     
    public Zoo(String[][] cages, int[] cagesSpeciales, String[][] animaux, String[][] robots){
     
    this.cages = cages;
    this.cagesSpeciales = cagesSpeciales;
    this.animaux = animaux;
    this.robots = robots;
    fichierSauvegarde = "SaveZoo.txt";
    zoo = new Cage[cages.length];
    zoo2 = new CageSpeciale[cagesSpeciales.length];
    System.out.println("nbre cages "+cages.length);
    System.out.println("nbre cages speciales "+cagesSpeciales.length);
     
    for(int i=0;i<cages.length;i++)
    {System.out.println("boucle des cages");
     
    if(cages[i][1].equals("herbivore et carnivore"))
    {System.out.println("cage pouvant accueillir des herbivores carnivores et omnivores"+i);
    zoo[i] = new Cage(Integer.parseInt(cages[i][0]), new String[] {"herbivore", "carnivore"});
    System.out.println(zoo[i]);
    }
    else
    {
    	if(cages[i][1].equals("herbivore"))
    	{System.out.println("cage pouvant accueillir des herbivores"+i);
    	zoo[i] = new Cage(Integer.parseInt(cages[i][0]), new String[] {"herbivore"});
    	System.out.println(zoo[i]);
    	}
    	else
    	{System.out.println("cage pouvant accueillir des carnivores"+i);
    	System.out.println(cages[i][0]);
    	System.out.println(new String[] {"carnivore"});
    	System.out.println(new Cage(Integer.parseInt(cages[i][0]), new String[] {"carnivore"}));
    	System.out.println(zoo[i]);
    	zoo[i] = new Cage(Integer.parseInt(cages[i][0]), new String[] {"carnivore"}); // le problème ne se pose qu'ici !
    	System.out.println(zoo[i]);
     
    	}
    }
    Classe Cage

    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
     
    import java.util.*;
     
    public class Cage{
     
    private int capaciteAnimaux;
    private String [] typeAnimaux;
    private int numero;
    private static int nbreCages = 0;
    private HashSet tableAnimaux;
    private HashMap gestionNourriture;
     
     
    public Cage(){
    capaciteAnimaux = 1;
    typeAnimaux = new String[] {"herbivore", "carnivore"};
    gestionNourriture = new HashMap();
    nbreCages++;
    numero = nbreCages;
    tableAnimaux = new HashSet();
    }
     
    public Cage(int capaciteAnimaux, String [] typeAnimaux){
    this.capaciteAnimaux = capaciteAnimaux;
    this.typeAnimaux = typeAnimaux;
    gestionNourriture = new HashMap();
    tableAnimaux = new HashSet();
    nbreCages++;
    numero= nbreCages;
    }
     
    public int getCapaciteAnimaux(){
    return capaciteAnimaux;}
     
    public String [] getTypeAnimaux(){
    return typeAnimaux;}
     
    public void setTypeAnimaux(String [] typeAnimaux){
    this.typeAnimaux = typeAnimaux;
    }
     
    public int getNumero(){
    return numero;}
     
    public int getNbreCages(){
    return nbreCages;}
     
    }
    Classe de test :

    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
     
    import java.util.*;
     
    public class Test{
     
    public static void main(String [] args){
    Zoo qcq = new Zoo();
    String [] cage1 ={"3", "herbivore"};
    String [] cage2 ={"3", "carnivore"};
    String [] cage3 ={"3", "herbivore et carnivore"} ;
     
    String [] animal = {"herbivore", "girafe", "sophie", "7"};
    String [] animal2 = {"carnivore", "serpent", "moufassa", "10"};
    String [] animal3 = {"omnivore", "ours", "bill", "9"};
    String [] robot = {"RD", "pile", "100", "12"};
    String [][] cages ={cage3, cage1, cage2};
    int [] cagesSpeciales = {4, 4};
    String [][] animaux = {animal, animal3, animal2};
    String [][] robots = {robot, robot};
    Zoo monzoo = new Zoo(cages, cagesSpeciales, animaux, robots);
    Cela renvoit :
    nbre cages 3
    nbre cages speciales 2
    boucle des cages
    cage pouvant accueillir des herbivores carnivores et omnivores 0
    Cage@69b332
    0
    boucle des cages
    cage pouvant accueillir des herbivores1
    Cage@173a10f
    1
    boucle des cages
    cage pouvant accueillir des carnivores2
    3
    [Ljava.lang.String;@530daa
    Cage@a62fc3
    null
    null
    2
    nbre de cages : 3capacite animaux cage 0
    Cage@69b332
    Cge@173a10f
    null

    puis le code continue (il y a une suite que je n'ai pas mise) et il y a une erreur
    Exception in thread "main" java.lang.NullPointerException
    qui vient du fait que j'utilise la cage null.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Points : 295
    Points
    295
    Par défaut
    j ai repris et testé ton code je n obtient pas null ....

    nbre cages 3
    nbre cages speciales 2
    boucle des cages
    cage pouvant accueillir des herbivores carnivores et omnivores0
    cirque.Cage@eee36c
    boucle des cages
    cage pouvant accueillir des herbivores1
    cirque.Cage@194df86
    boucle des cages
    cage pouvant accueillir des carnivores2
    3
    [Ljava.lang.String;@defa1a
    cirque.Cage@f5da06
    null
    Voila :cirque.Cage@bd0108

    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
    package cirque;
     
    public class Zoo {
     
    	public String fichierSauvegarde;
     
    	public Cage[] zoo;
     
     
    	public Zoo() {
     
    	}
     
    	public Zoo(String[][] cages, int[] cagesSpeciales, String[][] animaux,
    			String[][] robots) {
    		// this.cages = cages;
    		// this.cagesSpeciales = cagesSpeciales;
    		// this.animaux = animaux;
    		// this.robots = robots;
    		fichierSauvegarde = "SaveZoo.txt";
    		zoo = new Cage[cages.length];
    	//	zoo2 = new CageSpeciale[cagesSpeciales.length];
    		System.out.println("nbre cages " + cages.length);
    		System.out.println("nbre cages speciales " + cagesSpeciales.length);
     
    		for (int i = 0; i < cages.length; i++) {
    			System.out.println("boucle des cages");
     
    			if (cages[i][1].equals("herbivore et carnivore")) {
    				System.out
    						.println("cage pouvant accueillir des herbivores carnivores et omnivores"
    								+ i);
    				 zoo[i] = new Cage(Integer.parseInt(cages[i][0]), new String[] {"herbivore", "carnivore"});
    				System.out.println(zoo[i]);
    			} else {
    				if (cages[i][1].equals("herbivore")) {
    					System.out.println("cage pouvant accueillir des herbivores"
    							+ i);
    					zoo[i] = new Cage(Integer.parseInt(cages[i][0]), new String[] {"herbivore"});
    					System.out.println(zoo[i]);
    				} else {
    					System.out.println("cage pouvant accueillir des carnivores"
    							+ i);
    					System.out.println(cages[i][0]);
    					System.out.println(new String[] { "carnivore" });
    					System.out.println(new Cage(Integer.parseInt(cages[i][0]),
    							new String[] { "carnivore" }));
    					System.out.println(zoo[i]);
    					zoo[i] = new Cage(Integer.parseInt(cages[i][0]), new String[] {"carnivore"});
    					System.out.println("Voila :"+zoo[i]);
    				}
    			}
    		}
    	}
    }

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 27
    Points : 11
    Points
    11
    Par défaut
    petite question : package cirque est un package que tu as créé toi-même pour pouvoir tester mon code ?

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Points : 295
    Points
    295
    Par défaut
    oui

    il est déconseillé de travailler sur le package default ( sur eclipse )

Discussions similaires

  1. [WD15E] Problème avec NULL sur les rubriques DATE
    Par Hemgé dans le forum WinDev
    Réponses: 2
    Dernier message: 09/02/2012, 10h42
  2. Problème avec null & Vector
    Par MiXinG dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 23/03/2008, 14h19
  3. Problème avec NULL dans HAVING
    Par Jean-Marc68 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 06/11/2007, 14h01
  4. Code : problème avec Null
    Par mat75019 dans le forum Access
    Réponses: 4
    Dernier message: 02/05/2006, 15h01
  5. Problème avec NULL
    Par Fiquet dans le forum Débuter
    Réponses: 5
    Dernier message: 26/10/2005, 13h40

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