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 :

[general] return incorrect


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 162
    Par défaut [general] return incorrect
    J'appele une fonction dans un while de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while (!node2Name.equals(attrNodeK)) {
    	System.out.println("WHILE");
        node2 = browseShapeChildsForBifs(shapeNodeList, attrNodeK);
        System.out.println("node2 "+node2);
        if (node2 != null) {
        	node2Name = node2.getNodeName();
           	System.out.println("LE VRAI node2 QUI EST PAS NUL "+node2);
        }
    }
    Voici à quoi ressemble ma fonction browseShapeChildsForBifs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private Node browseShapeChildsForBifs(NodeList shapeNodeList, String attrNodeName) {
    	Node result = null;
    	for (int i=0; i<shapeNodeList.getLength(); i++) {
            	Node node = shapeNodeList.item(i);
    	        if (node.hasChildNodes()) {
    	       		NodeList newShapeNodeList = node.getChildNodes();
    	       		browseShapeChildsForBifs(newShapeNodeList, attrNodeName);
    	       	}
    	        if (shapeNodeList.item(i).getNodeName().equals(attrNodeName)) result = shapeNodeList.item(i);
    		}
       	if (result!=null) System.out.println("RESULT "+result);
    	return result;
    }
    Et voici le résultat qui boucle sans cesse :

    WHILE
    RESULT [Material2D: null]
    node2 null
    WHILE
    RESULT [Material2D: null]
    node2 null
    Et maintenant la question qui est tout à fait logique si vous avez suivi jusqu'ici :

    => Pourquoi est-ce que le "return" de ma fonction est censé renvoyer un élément de type "Node" s'appelant "Material2D" et que le "node2" que je récupère reste "null" ??

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Parce qu'il faut que quelque part dans le code une référence valide soit affectée à "node" avec l'instruction "new".

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 162
    Par défaut
    Peux-tu détailler, bien que ta réponse soit claire, je ne comprends pas bien et ne sais pas comment il faut faire...

  4. #4
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Node node = shapeNodeList.item(i);
    Si c'est cette ligne qui est censé faire cela il faut que "item(i)" renvoie une référence valide sur un objet de type "Node", par exemple:

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 162
    Par défaut
    Premièrement je n'ai toujours pas bien compris ce que je devais faire, et deuxièmement je ne pense pas pouvoir faire de "new Node()" puisque Node est une interface (le problème vient peut-être de là?)
    Merci.

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il y a de forte chance que cette condition ne soit jamais vérifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (shapeNodeList.item(i).getNodeName().equals(attrNodeName))
    donc pas d'affection...



    Trace l'exécution de ta méthode pour en être sûr...

    a++

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 162
    Par défaut
    Elle est forcément vérifiée puisque j'obtiens en sortie :

    RESULT [Material2D: null]
    Cela signifie que result n'est pas null selon là ou est placé ce print !

  8. #8
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    ben si ça doit être null, c'est juste le test qui n'est pas bon je pense.

    puisque dans ton while ça affiche null, c'est que le retour de browsShape.... est null.

    je sais pas, essaie de tester avec equals(null) ?

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 162
    Par défaut
    Toujours pas résolu, voici mon nouveau 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
    private Node browseShapeChildsForBifs(NodeList shapeNodeList, String attrNodeName) {
    	Node result = null;
    	for (int i=0; i<shapeNodeList.getLength(); i++) {
    	        Node node = shapeNodeList.item(i);
    	        if (node.hasChildNodes()) {
            		NodeList newShapeNodeList = node.getChildNodes();
            		browseShapeChildsForBifs(newShapeNodeList, attrNodeName);
            	}
    	        String nodeName = node.getNodeName();
    	        if (nodeName.equals(attrNodeName)) {
    	        	result = shapeNodeList.item(i);
    	        	System.out.println("RESULT "+result);
    	        	System.out.println("NOM DU NOEUD "+result.getNodeName());
    	        }
    	}
    	return result;
    }
    et voici le résultat :

    WHILE
    RESULT [Material2D: null]
    NOM DU NOEUD Material2D
    node2 null
    L'appel à la fonction est toujours le même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while (!node2Name.equals(attrNodeK)) {
    	System.out.println("WHILE");
        node2 = browseShapeChildsForBifs(shapeNodeList, attrNodeK);
        System.out.println("node2 "+node2);
        if (node2 != null) {
        	node2Name = node2.getNodeName();
           	System.out.println("LE VRAI node2 QUI EST PAS NUL "+node2);
        }
    }
    Toujours le même résultat, des suggestions ?

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

Discussions similaires

  1. [C#] Changer le focus avec la touche return
    Par sblanc74 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 01/10/2003, 18h38
  2. return
    Par drKzs dans le forum C
    Réponses: 3
    Dernier message: 18/09/2003, 22h36
  3. socket en general
    Par kev03 dans le forum Développement
    Réponses: 3
    Dernier message: 09/07/2003, 14h56
  4. feuille de style generale
    Par Manu_Just dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/03/2003, 10h06
  5. [VB6] [MSChart] Courbe incorrecte
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 08/10/2002, 21h53

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