Erreur en Java ;(

Résolu
Kvirus Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   -  
Kvirus Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   4
 
:*( toujours aucune response?,
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
ç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   Statut Membre Dernière intervention   9
 
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   Statut Membre Dernière intervention   4
 
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   Statut Membre Dernière intervention   437
 
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   Statut Membre Dernière intervention   4
 
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   Statut Membre Dernière intervention   437
 
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   Statut Membre Dernière intervention   4
 
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   Statut Membre Dernière intervention   437
 
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   Statut Membre Dernière intervention   4
 
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   Statut Membre Dernière intervention   437
 
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   Statut Membre Dernière intervention   4
 
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