Partage
  • Partager sur Facebook
  • Partager sur Twitter

nullPointerException sur tableau String

Sujet résolu
    17 juin 2015 à 14:21:50

    bonjour,

    je cherche depuis maintenant quelque heures sans succès. J'ai une fonction permettant de me dire que champs d'un tableau sont nulle mais quand j’exécute la fonction mais au moment ou j'arrive à un champs non rempli j'ai l'erreur NullPointerException.

    Voici mon code:

    	public static List<Integer> argsNumber(String[] args, int NumberArgs){
    		List<Integer> argManq = new ArrayList<Integer>();
    		
    		if(args.length >= NumberArgs){
    			argManq.clear();
    			return argManq;
    		}else{
    			argManq.clear();
    			
    			for(int i=0; i<=NumberArgs; i++){
    				System.out.println(args[i]);
    				if(args[i] == null){
    					argManq.add(i);
    				}
    			}
    			return argManq;
    		}
    		
    	}



    • Partager sur Facebook
    • Partager sur Twitter
      17 juin 2015 à 14:59:46

      Salut,

      à mon avis l'erreur vient de là :

       System.out.println(args[i]);

      tu essayes d'afficher quelque chose qui peut être nul, donc forcément quand c'est nul tu as l'erreur nul pointer exception.

      Essaye de faire ça à la place et dis moi si c'est bon :

      if(args[i] == null){
         argManq.add(i);
      }
      else {
         System.out.println(args[i]);
      }





      • Partager sur Facebook
      • Partager sur Twitter
        17 juin 2015 à 17:28:36

        Salut !

        Alors déjà les .clear() que tu utilises ne servent à rien puisque tu as fait new ArrayList() juste auparavant. Ensuite, le compilateur te dis exactement de quelle ligne vient l'erreur. Peux tu nous la faire partager ? De plus, si tu envoies un tableau vide ça va planter des que tu fais un args[i].

        • Partager sur Facebook
        • Partager sur Twitter
          17 juin 2015 à 19:08:17

          merci pour vos rapides réponses

           J'ai enlever la ligne "System.out.println" mais toujours la même erreur la console du compilateur montre que l'erreur vient de la ligne 12, je n'est pas la colonne

          merci encore pour vos réponses 

          -
          Edité par patou43 17 juin 2015 à 19:46:31

          • Partager sur Facebook
          • Partager sur Twitter
            17 juin 2015 à 20:36:49

            Dans ta condition tu fais aussi args[i], donc si args == null ça va te faire aussi une erreur.

            Fais ça pour y remédier if(args != null && args[i] == null) à la place de if(args[i] == null)

            -
            Edité par progy 17 juin 2015 à 20:37:00

            • Partager sur Facebook
            • Partager sur Twitter
              17 juin 2015 à 21:40:45

              Normalement t'es censé pouvoir faire
              if (Object==null){
              (...)


              sans avoir de NullPointerException

              Qu'est-ce qui se passe si tu fais String temp=arg[i];

              et que dans ton if tu fais if temp==null ? Est-ce que tu auras un NullPointerException à la ligne ou tu récupères ton String ?

              • Partager sur Facebook
              • Partager sur Twitter
                17 juin 2015 à 21:46:49

                Bonsoir.

                System.out.println(args[i]) ne peut pas poser problème :

                • System.out retourne un élément de type PrintStream
                • La méthode println(Object x) de la classe PrintStream appelle la méthode String.valueOf(x)
                • La méthode String.valueOf(Object obj) utilise la méthode toString() sur obj, mais test précédemment si l'objet est null : return (obj == null) ? "null" : obj.toString();
                Ainsi le problème vient de args[i] : si args est null, alors l'accès à une valeur lèvera un NullPointerException.
                • Partager sur Facebook
                • Partager sur Twitter
                Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                  18 juin 2015 à 17:39:26

                  Bonjour,

                  merci pour toutes ces réponses mais malheureusement args n'est pas nulle et malgré cette ligne: 

                   if(args != null && args[i] == null) 

                  j'ai toujours une erreur à la même ligne.

                  Simon

                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 juin 2015 à 17:47:39

                    Utilise le débugueur et regarde où ça plante !
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                      18 juin 2015 à 17:54:37

                      Celui d'Eclipse suffit ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 juin 2015 à 18:11:13

                        Oui bien sur.
                        Avec ça tu verras directement ta valeur null.
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                          18 juin 2015 à 18:30:53

                          j'ai un NullPointerException à la ligne du if au moment ou la valeur args[i] est nulle sinon quand la valeur n'est pas nulle aucune erreur (logique)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 juin 2015 à 18:48:52

                            patou43 a écrit:

                            Bonjour,

                            merci pour toutes ces réponses mais malheureusement args n'est pas nulle et malgré cette ligne: 

                             if(args != null && args[i] == null) 

                            j'ai toujours une erreur à la même ligne.

                            Simon

                            Il me paraît impossible que cette ligne plante.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              3 juillet 2015 à 15:13:02

                              Bonjour,

                              Le problème vient du fait que args.length est inférieure à NumberArgs (puisqu'on est dans le else)

                              donc il y a forcément un moment où i dépasse la taille du tableau.

                              Solution :

                              for(int i=0; i<=args.length; i++) 


                              Quentin



                              -
                              Edité par Quentin92 3 juillet 2015 à 15:14:26

                              • Partager sur Facebook
                              • Partager sur Twitter

                              nullPointerException sur tableau String

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown