CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

java aide

dali2000
dali2000
Niveau 2
12 décembre 2017 à 15:45:20

Bonjour a tous et toutes ce morceau de code genere erreur de compilation java.lang.NullPointerException
si qlq peux m'aider ^^

Bunyan
Bunyan
Niveau 17
12 décembre 2017 à 17:21:42

Merci de nous montrer le morceau de code en question -_-

Sinon, une NullPointerException (NPE) est l'exception la plus classique en Java.
Celle-ci implique que tu invoques une méthodes sur une variable null ou que tu passes une variable null à une méthode ne le gérant pas.

dali2000
dali2000
Niveau 2
12 décembre 2017 à 20:33:48

XD vous avez raisonje m'excuse jetais un peu presse j'ai pas fait attention voila le morceau de code -_-

public void MofifierPersonne(Personne p)
{
boolean found = false;
for( int i=0;i<nbrpersonne;i++)
{
if(tab[i].getNom()==p.getNom())
tab[i].setPrenom(p.getPrenom());
tab[i].setNaissance(p.getNaissance());
tab[i].setTel(p.getTel());
found = true;
break;}

if (found) AjouterPersonne(Personne P) ;
}
et voici la methode Ajouterpersonne
public boolean AjouterPersonne(Personne P)
{
if(nbrpersonne<tab.length)
{
tab[nbrpersonne]=P;
nbrpersonne++;
return true;
}
else return false;
}

Pseudo supprimé
Pseudo supprimé 12 décembre 2017 à 22:18:34

if (found) AjouterPersonne(Personne P) ;

Bizarre cette ligne. C'est quoi ce P ?

_S0uL
_S0uL
Niveau 9
12 décembre 2017 à 22:20:50

Tu développe avec quoi ? Eclipse ? C'est bizarre que ça compile déjà. Cette ligne :

 if (found) AjouterPersonne(Personne P) ;

devrai plutôt être :

 if (found) AjouterPersonne(p); 

Ensuite, tu es sur que le paramètre que tu passe à la fonction ModifierPersonne est initialisé ?

EDIT : De plus je pense en regardant le code qu'il manque des accolades après le premier if autour du code qui le suit.

Message édité le 12 décembre 2017 à 22:21:59 par _S0uL
dali2000
dali2000
Niveau 2
13 décembre 2017 à 14:29:37

oui eclipse Voici tous le code il genere Exception in thread "main" java.lang.NullPointerException
at agendapersonne.Agenda.AjouterPersonne(Agenda.java:27)
at agendapersonne.TestAgenda.main(TestAgenda.java:14)
Mercipour votre aide :)
public class Agenda {
protected String name;
protected static int nbrpersonne=0;
Personne []tab ;

public Agenda(String name)
{
this.name=name;
nbrpersonne++;

}
public void Afficher() {

for (int i=0;i<tab.length;i++)
{
if(tab[i]!=null)
System.out.println(tab[i]);
}

}
public boolean AjouterPersonne(Personne P)
{
if(nbrpersonne<tab.length)
{
tab[nbrpersonne]=P;
nbrpersonne++;
return true;
}
else return false;
}
public void RechercherPersonne(String nom)
{

for( int i=0;i<nbrpersonne;i++)
{
if(tab[i].getNom().toLowerCase()==nom.toLowerCase())
{System.out.println(tab[i]);
break;
}

if(i==nbrpersonne) {
System.out.println("This person is unavailable "
+ ",check Other Calendars . ");}
}
}

public void MofifierPersonne(Personne p)
{
boolean found = false;
for( int i=0;i<nbrpersonne;i++)
{
if(tab[i].getNom()==p.getNom())
{
tab[i].setPrenom(p.getPrenom());
tab[i].setNaissance(p.getNaissance());
tab[i].setTel(p.getTel());
found = true;
break;
}

if (found) AjouterPersonne(p) ;
}
} }
et ca le test
package agendapersonne;
import java.util.Scanner;

public class TestAgenda {
public static void main(String[]args)
{
Personne p =new Personne(" gaultier","jean paul","24 april 1952",02356720);
Personne p1 =new Personne(" Cotillard","Marion","30 September 1975",70566734);
Personne p2=new Personne ("leo","davinchi","15 april 1452",6547893);
p.toString();
p1.toString();
Personne[ ] tab= new Personne [100];
Agenda A = new Agenda("family calendar");
A.AjouterPersonne(p);
A.AjouterPersonne(p1);
A.AjouterPersonne(p2);

A.Afficher();
System.out.println("--------Add person to calendar--------");

Scanner sc=new Scanner(System.in);
System.out.println("please enter your last name :");
String prenom=sc.nextLine();
System.out.println("please enter your name:");
String nom=sc.nextLine();
System.out.println("please enter your mobile phone number :");
int tel=sc.nextInt();
sc.close();
A.AjouterPersonne(new Personne(prenom,nom,tel));

// try
// {
A.MofifierPersonne(new Personne("Mariem","Aidi","25 janvier 1989",26936699));
//}
//catch (NullPointerException e)
//{
//System.out.println("Ce Nom n'existe pas dans l'agenda !");
}

}

_S0uL
_S0uL
Niveau 9
13 décembre 2017 à 15:36:37

S'il te plais pour la prochaine fois met ton code dans des balises code ou bien utilise un service comme pastebin, hastebin ou github gists parce que c'est illisible et peu de monde va s'amuser à copier ça dans son éditeur pour l'indenter. Je l'ai fais...

Ton NPE vien de ta variable tab la classe Agenda. Quand tu fais tab.length dans la fonction AjouterPersonne (c'est pour ça que ton compilateur de donne l'erreur à cet endroit) Java ne peut pas le savoir puisque tu ne l'as jamais initilisé. Il faut que tu l'initialise dans le constructeur par exemple.

dali2000
dali2000
Niveau 2
13 décembre 2017 à 20:37:51

Tu as raison je m'excuse pour le code ^^ ,j'ai fixe linitialisation de la variable tab ,mais lerreur persiste
Exception in thread "main" java.lang.NullPointerException
at agendapersonne.Agenda.MofifierPersonne(Agenda.java:54)
at agendapersonne.TestAgenda.main(TestAgenda.java:33)
mais cette fois ci il genere lexception apres avoir introduire les information d'une personne
merci SOul pour vos reponses :)

_S0uL
_S0uL
Niveau 9
13 décembre 2017 à 21:36:45

Cette exception vient à priori de la méthode ModifierPersonne. Elle fait un parcour de ton tableau et à un moment donné elle tombe sur une case où il n'y a pas de personne dedans. Indice pour trouver cette case : dans ta fonction Afficher fait un System.out.println(i);, tu trouvera facilement d'où vient le problème. D'ailleur il n'est pas nécessaire de parcourir tout le tableau dans cette fonction mais ça c'est un autre problème.

Bunyan
Bunyan
Niveau 17
14 décembre 2017 à 08:23:05

<code>agendapersonne.Agenda.MofifierPersonne(Agenda.java:54)</Code

L'erreur provident du package agendapersonne, de la classe Agenda, située dans le fichier Agenda.java, et elle survient à la ligne 54.
Normalement, en sachant lire la stacktrace, tu devrais pouvoir la corriger sans trop de souci :)

dali2000
dali2000
Niveau 2
14 décembre 2017 à 10:34:28

j'ai un System.out.println(i) dans ma methode...
comment stp Bunyan :question: public void Afficher() { for (int i=0;i<nbrpersonne;i++) { if(tab[i]!=null) System.out.println(tab[i]); }
excusez moi je suis encore debutante

_S0uL
_S0uL
Niveau 9
14 décembre 2017 à 11:49:43

Non tu as un System.out.println(tab[i]);. Mais si tu fais afficher les i tu verra tout de suite la "case" de ton tableau qui n'est pas instanciée (celle qui ne sera pas écrite dans la sortie) et tu pourra corriger facilement le problème. Ce if :

if(tab[i]!=null)

Fait que tes personnes s'affichent normalement dans cette fonction puisque tu ignore les "cases" non instanciées. Dans tes fonction ModifierPersonne et RechercherPersonne tu ne fait pas cette vérification (et c'est très bien elle ne devrai même pas être dans Afficher. Mais du coup comme tu as fais une toute petite erreur ça te fais planté ton programme parce que tu as 1 et 1 seul case de tab entre 0 et nbpersonne qui est vide. Ton erreur est vraiment très simple je suis sur que tu peux la trouver en cherchant un peu.

dali2000
dali2000
Niveau 2
14 décembre 2017 à 13:09:28

" tres simple" mais je n'arrive pas a le resoudre sincerement :-(

_S0uL
_S0uL
Niveau 9
14 décembre 2017 à 16:24:33
public Agenda(String name)
{
	this.name=name;
	nbrpersonne++;
}

Bon ça c'est ton constructeur pour la classe Agenda (tu as peut-être ajouté quelque chose pour créer le tableau ou pas mais peu importe). Il y a combien de personnes dans ton tableau quand tu crées un objet de cette classe ?

Bunyan
Bunyan
Niveau 17
14 décembre 2017 à 22:32:37

Respire, arrête-toi un peu :)
Remonte depuis l'erreur, et interprète ce qu'elle te dit. C'est très important que tu y arrives par toi-même car tu auras à le faire en non stop.

Par de ce postulat :
"Mon erreur m'indique un problème à la ligne 54. Une valeur est null et j'invoque une méthode dessus, ce qui fait planter.
Je regarde cette ligne. Qu'est-ce qui peut être null ici ?
Est-ce que c'est normal que ce le soit ? Comment ma variable est-elle null ?
Comment résoudre le problème ? Faut-il que je mettes en place une vérification ? Ou ma variable ne peut pas être null ici, donc c'est problème d'initialisation ?"
Etc, etc :)

dali2000
dali2000
Niveau 2
15 décembre 2017 à 01:40:29

hhh je viens a pensee autrement mnt

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment