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 :

java lang NullPointerException sur ue boucle for


Sujet :

Langage Java

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 146
    Par défaut java lang NullPointerException sur ue boucle for
    Bonjour je n'arrive pas à voir d'où vient le problème sur cette boucle for. Pourriez-vous m'aider svp merci ?

    java.lang.NullPointerException
    at Reparti.RepartInitialisation(Reparti.java:542)
    at Reparti.intervalles(Reparti.java:125)
    at Calcul.initialisation(Calcul.java:847)

    java.lang.NullPointerException
    at Reparti.RepartInitialisation(Reparti.java:542)
    at Reparti.intervalles(Reparti.java:125)
    at Calcul.initialisation(Calcul.java:830)

    Reparti.RepartInitialisation()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      static void RepartInitialisation() throws Exception
      {
        for( i = 1; i <= 29; i++ )
        {
          Pend.getRepartition().TxtRep1[i].setText( "" ); => Ligne 542
        }
      }
    Reparti.intervalles()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      //pour le choix de la sixième répartition
      if( Pend.getMDIMenu().mnuRepart4.isSelected() == true )
      {
    	RepartInitialisation(); => Ligne 125
    	//affectation des bonnes valeurs d'entraxe en fonction de la répartition choisi
    	Pend.getRepartition().TxtRep1[1].setText( "2.25" );
    	ec = 9;
    	emini = Obj.toDouble( "4.5" );
    	en = Obj.toDouble( "2.25" );
    	Pend.getRepartition().TxtRep1[2].setText( "6.75" );
    	e2 = Obj.toDouble( "6.75" );
    	RepartExtreme();
      }
    Calcul.initialisation()

    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
     
    	if( (Pend.getMDIMenu().mnuOptLot.isSelected() == true) && (Variable.Portee <= Variable.PorteeMaxi) && (Variable.Passe1 == false) )
    	{
    	  Reparti.intervalles();
    	  Variable.somme2 = 0;
    	  for( Variable.j = 1; Variable.j <= 30; Variable.j++ )
    	  {
    		if( Pend.getRepartition().TxtRep1[Variable.j].getText().equals( "" ) )
    		{
    		  Variable.somme2 = Variable.somme2 + 0;
    		}
    		else
    		{
    		  Variable.somme2 = Variable.somme2 + 1;
    		}
    	  }
    	  Variable.nep = Variable.somme2;
    	}

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Bonjour,

    A vue d'oeil,
    Soit Pend est null, soit getRepartition() retourne null, soit TxtRep1[i] est null.

    Il faudrait mettre un point d'arrêt sur la ligne pou voir ce qui se passe.

    A+

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 146
    Par défaut
    Pend.getRepartition().TxtRep1[i]=null (vu au débug)

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Le tableau TxtRep1, n'est donc pas initilisé correctement.
    Il faut vérifier l'initialisation ou réduire les indices de parcours de la boucle,

    a+

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 146
    Par défaut
    public TextBox TxtRep1[] = new TextBox[31];

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Oui, et dans ce tableau il faut initialiser les TextBox.
    TxtRep1[i] = ???

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 146
    Par défaut
    j'ai TxtRep1[i] cannot be resolved et Pend.getRepartition().TxtRep1[i] qui est toujours à null

  8. #8
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Par défaut
    Citation Envoyé par youness78 Voir le message
    public TextBox TxtRep1[] = new TextBox[31];
    Ceci crée un tableau.

    Lorsque tu crée un tableau de type primitif, à chaque élément tu tableau sera attribué la valeur par défaut du type correspondant. Par exemple 0 pour int, ou bien encore false pour boolean.
    Mais si tu crée un tableau d'objet, aucun objet ne sera instancié. Tous tes éléments seront donc null.

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 146
    Par défaut
    Est-ce que ça signifie que je dois caster les élements de mon tableau ?

  10. #10
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Par défaut
    Le casting est une autre notion. Comme te l'a dit eric39, il est nécessaire de les instancier.

    Voici un exemple qui montre que les JTextField sont null. A la fin ont utilise la méthode setText sur tab[0], mais comme tab[0] est null, cela provoque un NullPointerException.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Test1 {
     
    	public static void main(String[] args) {
    		JTextField[] tab = new JTextField[5];
    		for (int i = 0; i < tab.length; i++) {
    			System.out.println(tab[i]);
    		}
    		tab[0].setText("mon texte");
    	}
     
    }
    La solution est donc d'instancier chaque élément du tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Test2 {
     
    	public static void main(String[] args) {
    		JTextField[] tab = new JTextField[5];
    		for (int i = 0; i < tab.length; i++) {
    			tab[i] = new JTextField();
    			System.out.println(tab[i]);
    		}
    		tab[0].setText("mon texte");
    	}
     
    }

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/07/2014, 06h26
  2. Exception java.lang.NullPointerException sur EntityManagerFactory
    Par LamMSir dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 03/06/2013, 19h01
  3. java.lang.NullPointerException sur calcul dans TMap
    Par TheTcha dans le forum Développement de jobs
    Réponses: 6
    Dernier message: 31/01/2013, 10h57
  4. Bloqué sur une erreur java.lang.NullPointerException
    Par youness78 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 03/11/2009, 15h49
  5. java.lang.NullPointerException getparent()
    Par guano dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 17/03/2006, 17h38

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