Erreur en Java ;(

Résolu/Fermé
Kvirus Messages postés 53 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 décembre 2009 - 4 avril 2009 à 16:59
Kvirus Messages postés 53 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 décembre 2009 - 4 avril 2009 à 22:56
Bonjour à tous,
je viens de terminer une traduction d'un algorithme en Java: le problème constitue de faire une simulation d'un traitement de processus dans FIFO.
Lors de l'exécution je reçois un message que j'ai pas pu résoudre(pas faute d'avoir essayer :( ).
Je vous expose mes class et ma class test:
/////////////////////////////////////////////////// Class processus ///////////////////////////////////////////////////

public class Proc
{ public String nom;
public int Tarr,Texe;
Proc(String nom,int Tarr,int Texe)
{this.nom=nom;
nom="";
this.Tarr=Tarr;
Tarr=0;
this.Texe=Texe;
Texe=0;}
void set_nom()
{System.out.print("donnez SVP le nom de processus");
String P=Clavier.lireString();
nom=P;
}
void set_Tarr()
{System.out.print("donnez SVP le temps d'arrivé de processus");
int P=Clavier.lireInt();
Tarr=P;
}
void set_Texe()
{System.out.print("donnez SVP la durée de processus");
int P=Clavier.lireInt();
Texe=P;
}
void Affiche_nom()
{System.out.print("Le nom est:"+nom);}
void Affiche_Tarr()
{System.out.print("Le temps d'arrivé est:"+Tarr);}
void Affiche_Texe()
{System.out.print("La durée est:"+Texe);}
}


///////////////////////////////////////// class de tableau de processus ////////////////////////////////////////////


public class Tab_Proc extends Proc
{Proc T[];
public int nbr_proc=0,i;

Tab_Proc(String nom,int Tarr,int Texe)
{super(nom,Tarr,Texe);
}

public void Remplissage()
{
int x;
System.out.print("donner SVP le nembre des processus");
x=Clavier.lireInt();
for(i=0;i<x;i++)
{
Proc P= new Proc (null,0,0);
P.set_nom();
P.set_Tarr();
P.set_Texe();
T[i]=P;
nbr_proc++;
}
}

public void Trie()
{for(int x=0;x<nbr_proc-1;x++)
{Proc m =T[x];
for (int y=x+1;y<nbr_proc;y++)
{if(T[y].Tarr<m.Tarr)
{m=T[y];
T[y]=T[x];
T[x]=m;
}
}
}

}
public void Affiche_Tab_Tri()
{for(i=0;i<nbr_proc;i++)
{T[i].Affiche_nom();
T[i].Affiche_Tarr();
T[i].Affiche_Texe();
System.out.print("Le nom est:"+nom);
System.out.print("Le temps d'arrivé est:"+Tarr);
System.out.print("La durée est:"+Texe);
System.out.print("========================");
}
}

public void calculer_FIFO()
{ int Ta,Tatt,Te,Tex,Ts,Tsej,cdebut,cfin;
cdebut=T[0].Tarr;
Ta=0;
Te=0;
Ts=0;
for(i=0;i<nbr_proc;i++)
{Tatt=0; Tex=0; Tsej=0;
cfin=cdebut+T[i].Tarr;
System.out.print(T[i].nom+"est en cours");
System.out.print("De"+cdebut+"jusqu'à"+cfin);
Tatt=cdebut-T[i].Tarr;
Tsej=cfin-T[i].Tarr;
Tex=Tsej-Tatt;
System.out.print("Son temps d'attente actuel est:"+Tatt);
System.out.print("Son temps d'execution actuel est:"+Tex);
System.out.print("Son temps de séjour actuel est:"+Tsej);
Ta=Ta+Tatt;
Ts=Ts+Tsej;
Te=Te+Tex;

}
System.out.print("Son temps d'attente moyen est:"+Ta/nbr_proc);
System.out.print("Son temps de sejour moyen est:"+Ts/nbr_proc);
System.out.print("Son temps d'exécution moyen est:"+Te/nbr_proc);

}
}

////////////////////////////////////////////////// Class test ///////////////////////////////////////////////////
public class Test
{
public static void main(String[] args)
{Tab_Proc Pr=new Tab_Proc(null,0,0);

Pr.Remplissage();
Pr.calculer_FIFO();
Pr.Trie();
Pr.Affiche_Tab_Tri();


}

}
==========> je reçois ce message aprés la saisit du 1er processus:
donner SVP le nembre des processus2
donnez SVP le nom de processusa
donnez SVP le temps d'arrivé de processus0
donnez SVP la durée de processus3
Exception in thread "main" java.lang.NullPointerException
at Tab_Proc.Remplissage(Tab_Proc.java:21)
at Test.main(Test.java:7)

SVP aider moi ou donner des suggestions pour améliorer mon projet.
Merci d'avance.
A voir également:

12 réponses

Kvirus Messages postés 53 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 décembre 2009 4
4 avril 2009 à 18:32
:*( toujours aucune response?,
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
4 avril 2009 à 18:54
ça serait bien de nous dire a quel ligne se trouve ton erreur car nous on a pas les numero de ligne ;)
0
ezo_es Messages postés 100 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 16 mars 2010 9
4 avril 2009 à 18:56
Bonjour
est ce que tu peux nous dire a quel niveau exactement tu as le probleme et aussi le message d'erreur que tu reçoi
et dis nous aussi si tu as des ligne souligné en rouge dans tes classe et les quelles
bonne chance
0
Kvirus Messages postés 53 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 décembre 2009 4
4 avril 2009 à 19:15
Merci de me répondre,
J'en ai aucune ligne soulignée ni aucunes fautes lors de la compilation de la class test sauf que en introduisant les valeur de 2eme processus (nom,Tar,Texe) je reçoit ce message
Exception in thread "main" java.lang.NullPointerException
at Tab_Proc.Remplissage(Tab_Proc.java:21)
at Test.main(Test.java:7)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
4 avril 2009 à 19:16
oui mais la ligne 21 de Tab_Proc.java et la ligne 7 de Test.java c'est lesquel ? ;)
0
Kvirus Messages postés 53 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 décembre 2009 4
4 avril 2009 à 19:29
tab_proc c'est une deuxième class et test c'est le class main ( je les ai déja écris dans mon premier message).
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
4 avril 2009 à 19:33
on se comprend pas ;)
precise quel est la ligne 21 de Tab_proc.java et aussi la ligne 7 Test.java car visiblement c'est sur ces lignes que ce trouve l'erreur...
0
Kvirus Messages postés 53 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 décembre 2009 4
4 avril 2009 à 22:01
pour la class test.java c'est la ligne: Pr.Remplissage();
pour la class tab_proc c'est la ligne: T[i]=P;

PS: désolé pour le retard :)
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
4 avril 2009 à 22:13
je pense que c'est parce que tu n'as pas instancier T
tu peux essayer de l'instancier au debut de ta methode remplissage
public void Remplissage() 
{ 
int x; 
T= new Proc[20];
System.out.print("donner SVP le nembre des processus"); 
x=Clavier.lireInt(); 
for(i=0;i<x;i++) 
{ 
Proc P= new Proc (null,0,0); 
P.set_nom(); 
P.set_Tarr(); 
P.set_Texe(); 
T[i]=P; 
nbr_proc++; 
} 
}
0
Kvirus Messages postés 53 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 décembre 2009 4
4 avril 2009 à 22:50
merci pour l'aide il y a plus de message d'erreu.
Juste une autre question comment faire un retour a la ligne aprés chaque phrase?
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
4 avril 2009 à 22:52
tu rajoute un \n pour le retour a la ligne
si tu n'as plus d'autres probleme n'oublies pas de metre en resolu ;)
0
Kvirus Messages postés 53 Date d'inscription jeudi 11 octobre 2007 Statut Membre Dernière intervention 27 décembre 2009 4
4 avril 2009 à 22:56
merci pour tous je vais maintenant essayer de faire les processus SJF,RR et SRT et voir si je m'en sors.
Mille merci
0