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

Java ME Discussion :

pb erreur de pointeur aidez moi please


Sujet :

Java ME

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Par défaut pb erreur de pointeur aidez moi please
    bonjour a tous,
    g un petit prob avec un programme:
    je travail en J2ME

    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
     
     try
    		{
     
            	// Open RecordStore "FormAceRMS", on instancie un RecordEnumeration sur celui ci
            	System.out.println("  selected_RMS 2:  "+selected_RMS);
     
            	RecordStore rs = RecordStore.openRecordStore("Record RMS",true);
            	RecordEnumeration re = rs.enumerateRecords(null,new FormAlphabetic(),true);
     
            	//add 1 tab id and tab FormAceRMS
            	tab_FormAceRMS = new String[re.numRecords()];
            	tab_id = new String[re.numRecords()];
     
     
            	for(int a = 0 ; re.hasNextElement();a++)
            	{
    				int id = re.nextRecordId();
     
    				String InfoCollection = getInfo(id)[2] ;
     
            		if ( InfoCollection.equals(selected_RMS) )
            		{
     
    					tab_FormAceRMS[a] = getInfo(id)[crit];
    					System.out.println("  tab_FormAceRMS[a]  "+tab_FormAceRMS[a]);
    					tab_id[a] = ""+id;
     
    				}
     
            	}
            	//Close RecordStore
            	rs.closeRecordStore();
    		}
            catch(Exception e){}
     
     
     //       drp_type_accueil = new ChoiceGroup("level favorites:", Choice.POPUP,genre_string, null);
             drp_type_accueil= new ChoiceGroup("Sort", Choice.POPUP,criter, null);
     
            List_contact = new ChoiceGroup("List:", Choice.EXCLUSIVE,tab_FormAceRMS, null);
    il me met lerreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    java.lang.NullPointerException
    	at javax.microedition.lcdui.ChoiceGroup.<init>(+92)
    	at javax.microedition.lcdui.ChoiceGroup.<init>(+10)
    	at FormListAce.init(+336)
    	at FormListAce.ListRMS(+9)
    	at FormShowCollection.commandAction(+115)
    	at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(+282)
    	at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(+10)
    	at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
    	at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47)
    	at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+250)
    ce que je comprend pas car si jenleve le IF le prog marche tres bien.
    le if... sert a me faire une comparaison avec une collection et mafichee que les enregistrement qui corresponde a cette collection


    cordialement
    mike

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    L'erreur est bien la dessus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( InfoCollection.equals(selected_RMS) )
    Ca veut dire qu'un des deux objets que tu veut comparer existe pas, n'a pas encore été initialisé

    Vérifie bien que selected_RMS soit initialisé

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Par défaut
    le
    if ( InfoCollection.equals(selected_RMS) )
    a lair de bien passer qd il est true y passe dedans.

    il me bloque ici en fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List_contact = new ChoiceGroup("List:", Choice.EXCLUSIVE,tab_FormAceRMS, null);
    cest la que mon pointeur est null enfin c ce que je pense
    ...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Par défaut
    selected_RMS est bien init

    ce que je comprend pas c que si jenleve le if... le prog marche tres bien mais mafiche tt ce qui a ds tte mes collections

  5. #5
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    Si tu développe avec un IDE genre Eclipse ou je ne sais quoi, va en debug pour voir ou c'est

    Mais bon, vu l'exception, c'est a la ligne 336 de FormListAce. J'imagine que c'est ta classe non ?

  6. #6
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    J'ai compris pourquoi, la condition du if n'est jamais remplie et à la fin tu essaie d'accéder à un élément qui n'est pas initialisé puisqu'il ne le serait que dans le if.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Par défaut
    je nai que 280 ligne

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Par défaut

    tu peu men dire un peu plus wichtounet

    ma fct "if" et vrai qd InfoCollection.equals(selected_RMS) nan???

    en tt cas si je me mait un println ds la console il me retourne bien true qd y sont egale

  9. #9
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Je pensais que la condition n'était jamais remplie, car quand tu ne mettais pas de if, tu étais sur que la ligne tab_FormAceRMS[a] = getInfo(id)[crit]; était appelé au moins une fois, alors qu'avec le if, si la condition n'est jamais remplie, cette ligne n'est jamais appelé et donc ton tableau n'est pas rempli.

    Mais en fait il n'est pas null mais vide, donc je comprends pas pourquoi ca te fait un nullPointerException...

    Essaie d'ajouter cela dans ton code, apres la boucle for :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(tab_FormAceRms.length == 0){tab_Form_AceRms[0] == "aucun élément";}

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Par défaut
    tu voulait dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(tab_FormAceRMS.length == 0){tab_FormAceRMS[0] = "aucun élément";}
    ?
    en tt cas ca me fait la meme chose
    meme erreur

  11. #11
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    ok alors ca veut dire que l'erreur ne vient pas du fait que le tableau est vide... c'est louche...

    Desolé mais je vois pas d'ou ca peut venir d'autres, peut etre est ce spécifique au J2Me mais je connais pas assez pour connaitre les différences

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Par défaut
    ok merci qd meme wichtounet

    je vais essayer de rexpliquer mon prog

    jenregistre des collection en RMS (je lapel RMS1)
    dans ces collections jai des titre qui son enregistrer dans RMS2
    pour recuperer les nom qui correspondent a la collection je compare le nom de la collection au titre si il est correspondent alors je les affiche.

    malheureusement ca ne marche pas sauf quand jafiche tt les nom de tte les collection( en enlevant le if)

    aidez moi please

    mike

  13. #13
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    Extrait de la doc :

    ChoiceGroup
    public ChoiceGroup(java.lang.String label,
    int choiceType,
    java.lang.String[] stringElements,
    Image[] imageElements)

    (...)

    Throws:
    java.lang.NullPointerException - if stringElements is null or if the stringElements array contains any null elements
    (...)
    Vérifie que tes tableaux tab_FormAceRMS et criter ne contiennent aucun élément null.

    Si tu ne peux pas y aller en debug, met un ptit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for (int i = 0;i<tab_FormAceRMS.length;i++{
     System.out.Println(tab_FormAceRMS[i]);
    }
    for (int i = 0;i<criter.length;i++{
     System.out.Println(criter[i]);
    }
    juste avant de construire les 2 ChoiceGroup

    Et regarde ce que ça donne.

    reviens le poster ici au pire :p

  14. #14
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    Ok ça devrait être ça :

    tab_FormAceRMS = new String[re.numRecords()];

    tu fais un tableau de x elements.
    Mais à la fin ces x éléments ne sont pas remplis. (a cause de ton if, c'est pour ça que ça marche quand tu l'enlèves)

    tu peux ptet mettre une chaine vide si ton if est false ?

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Par défaut
    merci Satch

    tab_FormAceRMS[i] ; title1 -> i 0
    tab_FormAceRMS[i] ;title12 -> i 1
    tab_FormAceRMS[i] ;null-> i 2
    tab_FormAceRMS[i] ;null -> i 3
    tab_FormAceRMS[i] ;null -> i 4
    criter[i] ;Title-> i 0
    criter[i] ;Author -> i 1
    criter[i] ;Collections -> i 2
    criter[i] ;File Size-> i 3

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Par défaut
    merci beaucoup Satch

    cetait effectivement ca 2 jours perdu sur une ....

    juste rajouter ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    				else
    				{
    					tab_FormAceRMS[a]="";
     
     
    				}

  17. #17
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    mais avec ca, ne va t'il pas t'afficher des lignes vides ?

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Par défaut
    encore un petit probleme
    le tableau marche bien mais jai des chams null dedans

    ca me fait ca

    toto
    titi
    ""
    ""
    tata

    je voudrais enlever les ""

    qqun aurait une idee a me proposer??
    merci

    Mike

  19. #19
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    En ayant rajouté ton else pour mettre une chaine vide c'est normal finalement.

    Je ne connais pas J2ME et donc ce que je vais dire n'est ptet pas faisable.

    au lieu de mettre dans un tableau dans ton if, tu pourrais mettre dans une List que les trucs qui t'interressent puis après reconvertir cette liste en Array.

    Ou encore, te faire une méthode qui "compresse" ton tableau pour virer les chaines vides.

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 16
    Par défaut
    je peu faire comment pr compresser le tableau??

    jai essayer de faire ta prem solution mais jai une erreur
    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
     
     // Open RecordStore "FormAceRMS", on instancie un RecordEnumeration sur celui ci
                RecordStore rs = RecordStore.openRecordStore("FormAceRMS",true);
                RecordEnumeration re = rs.enumerateRecords(null,new FormAlphabetic(),true);
                tab_FormAceRMS = new String[re.numRecords()];
                tab_id = new String[re.numRecords()];
                j=0;
                for(int a = 0 ; re.hasNextElement();a++)
                {
                    id = re.nextRecordId();
                    String InfoCollection = getInfo(id)[CritView] ;
                     System.out.println("InfoCollection"+InfoCollection);
                      System.out.println("selected_RMS"+selected_RMS);
     
                    if ( InfoCollection.equals(selected_RMS) || AllList==true )
                    {
                        System.out.println("AllList  ");
                        {
                            tab_FormAceRMS[a] = getInfo(id)[crit];
                            AceList.append(tab_FormAceRMS[a]);
                            tab_id[a] = ""+id;
                            counter++;
                        }
                    }
                    else
                    {
                        tab_FormAceRMS[a]="";
                    }
                      j++;
                }
                rs.closeRecordStore();
     
                System.out.println(counter);
     
                int i=0;
                tab = new String[counter-1];
                 for(int a = 0 ; a == j;a++)
                {
                    if( tab_FormAceRMS[a] != "")
                    {
                        System.out.println("Ok");
                        tab[i] = tab_FormAceRMS[a];
                        i++;
                    }
     
                }
    erreur de pointeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    java.lang.NullPointerException
    	at javax.microedition.lcdui.ChoiceGroup.<init>(+92)
    	at javax.microedition.lcdui.ChoiceGroup.<init>(+10)
    	at FormListAce.init(+434)
    	at FormListAce.ListRMS(+24)
    	at FormShowCollection.commandAction(+170)
    	at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(+282)
    	at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(+10)
    	at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
    	at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47)
    	at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+250)

Discussions similaires

  1. Double jointure : aidez-moi please !
    Par coq66 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/01/2010, 19h31
  2. Réponses: 2
    Dernier message: 31/07/2007, 14h12
  3. message erreur aidez moi
    Par lilialex dans le forum Access
    Réponses: 10
    Dernier message: 13/12/2006, 13h26
  4. Erreur de variable, je comprends vraiement pas :( aidez moi svp.
    Par plex dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 04/08/2006, 14h16
  5. Je vois pas d'où vient mon erreur!! Aidez moi SVP
    Par liliboms dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 04/04/2005, 08h25

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