Besoi d'aide
bifaka
-
bifaka -
bifaka -
bonjour à tous,
voici mon programme et l'ennoncé de l'exercice:
je dois déclarer un objet de la classe Registre dans le main programme en lui attribuant la valeur null quelle erreur apparaît pendant l'exécution du programme?
essaez d'attraper l'erreur en utilisant le block try-catch.
demontrez la capacité de la fonction en affichant dans la partie de catch "essaye d'acceder au pointeur Null" et en affichant à la fin du block try-catch "le programme continue".
pour qu'une erreur apparaisse j'ai du commenter
//bit= new Registre(d); et l' erreur apparue est NullpointerException à partir de /*
*affiche le contenu
*du registre
*/
dites moi si c'est juste ce que j'ai fais et pourquoi je dois commenter bit= new Registre(d) pour que l'erreur apparaisse.
je ne m'y connais pas avec try- catch. Quelqu'un pourrai me dire à quelle niveau je dois mettre mon block? voici ce que j'ai fait
Merci pour toute aide
public class Registre {
private short [] myBitArray;
/**
* Constructeur
* @param aBitArrayLength
*/
public Registre(int aBitArrayLength){
myBitArray=new short[aBitArrayLength];
short index;
for(index=0;index<aBitArrayLength; index ++)
{
myBitArray[index]=0; }
}
/**
* Modifier la valeur d un bit
* @param position
* @param valeur
*/
public void set(int position, int valeur){
if ( !((valeur==0)||(valeur==1)) ){
System.out.println("la valeur "+valeur+" est incompatible avec le type bit.");
}
if ( (position<myBitArray.length) && (position>0) ){
myBitArray[position]=(short) valeur;
} else {
System.out.println("La position "+position+" est en dehors du tableau.");
}
}
/**
* Afficher le tableau
*/
public void get(){
int index=0;
while (index<myBitArray.length) {
System.out.print(myBitArray[index]);
if (index< (myBitArray.length-1) ){
System.out.print("|");
} else {
System.out.println();
}
index++;
}
}
}
/*
*Methode Main
*/
class GereRegistre {
public static void main(String args[]) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
/*
*crée un Objet
*/
Registre bit=null;
short i, d;
/*
*Initialiaser
*l' Objet
*/
bit= new Registre(d);
System.out.println("donner la longueur de l'array : ");
i=Short.parseShort(in.readLine());
/*
*affiche le contenu
*du registre
*/
try{
bit.get();
System.out.println("donnez la valeur de l'index et du bit : ");
for ( j =0;j<i;j++)
{
System.out.print(" ");
j=Short.parseShort(in.readLine());
System.out.print("");
k=Short.parseShort(in.readLine());
System.out.print(+bit.set(j,k));
System.out.println("");
}
/*
*affiche à nouveau le contenu
*du registre
*/
bit.get();
}
catch(NullPointerException e){
System.out.println(" essaye d'acceder au pointeur Null");
}
System.out.println("le programme continue");
}
}//fin main
}//fin programme
voici mon programme et l'ennoncé de l'exercice:
je dois déclarer un objet de la classe Registre dans le main programme en lui attribuant la valeur null quelle erreur apparaît pendant l'exécution du programme?
essaez d'attraper l'erreur en utilisant le block try-catch.
demontrez la capacité de la fonction en affichant dans la partie de catch "essaye d'acceder au pointeur Null" et en affichant à la fin du block try-catch "le programme continue".
pour qu'une erreur apparaisse j'ai du commenter
//bit= new Registre(d); et l' erreur apparue est NullpointerException à partir de /*
*affiche le contenu
*du registre
*/
dites moi si c'est juste ce que j'ai fais et pourquoi je dois commenter bit= new Registre(d) pour que l'erreur apparaisse.
je ne m'y connais pas avec try- catch. Quelqu'un pourrai me dire à quelle niveau je dois mettre mon block? voici ce que j'ai fait
Merci pour toute aide
public class Registre {
private short [] myBitArray;
/**
* Constructeur
* @param aBitArrayLength
*/
public Registre(int aBitArrayLength){
myBitArray=new short[aBitArrayLength];
short index;
for(index=0;index<aBitArrayLength; index ++)
{
myBitArray[index]=0; }
}
/**
* Modifier la valeur d un bit
* @param position
* @param valeur
*/
public void set(int position, int valeur){
if ( !((valeur==0)||(valeur==1)) ){
System.out.println("la valeur "+valeur+" est incompatible avec le type bit.");
}
if ( (position<myBitArray.length) && (position>0) ){
myBitArray[position]=(short) valeur;
} else {
System.out.println("La position "+position+" est en dehors du tableau.");
}
}
/**
* Afficher le tableau
*/
public void get(){
int index=0;
while (index<myBitArray.length) {
System.out.print(myBitArray[index]);
if (index< (myBitArray.length-1) ){
System.out.print("|");
} else {
System.out.println();
}
index++;
}
}
}
/*
*Methode Main
*/
class GereRegistre {
public static void main(String args[]) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
/*
*crée un Objet
*/
Registre bit=null;
short i, d;
/*
*Initialiaser
*l' Objet
*/
bit= new Registre(d);
System.out.println("donner la longueur de l'array : ");
i=Short.parseShort(in.readLine());
/*
*affiche le contenu
*du registre
*/
try{
bit.get();
System.out.println("donnez la valeur de l'index et du bit : ");
for ( j =0;j<i;j++)
{
System.out.print(" ");
j=Short.parseShort(in.readLine());
System.out.print("");
k=Short.parseShort(in.readLine());
System.out.print(+bit.set(j,k));
System.out.println("");
}
/*
*affiche à nouveau le contenu
*du registre
*/
bit.get();
}
catch(NullPointerException e){
System.out.println(" essaye d'acceder au pointeur Null");
}
System.out.println("le programme continue");
}
}//fin main
}//fin programme
6 réponses
Salut,
je ne peux pas te répondre car je ne sais pas, mais je vais te rappeler quelques règles qui permettront que tu obtiennes de l'aide plus facilement :
_évite ce genre de titre. Dans un "bon" titre, il faut mettre un aperçu du vrai problème.
_met aussi dans le titre le type de programmation : je ne sais meme pas en quel language tu codes.
_évite de faire des "up", ça sert pas à grand chose. Moi aussi j'ai un message de demande d'aide, j'attend 1 semaine avant de faire un up.
En espèrant que tu comprennes, et que tu en tiendras compte.
A+
je ne peux pas te répondre car je ne sais pas, mais je vais te rappeler quelques règles qui permettront que tu obtiennes de l'aide plus facilement :
_évite ce genre de titre. Dans un "bon" titre, il faut mettre un aperçu du vrai problème.
_met aussi dans le titre le type de programmation : je ne sais meme pas en quel language tu codes.
_évite de faire des "up", ça sert pas à grand chose. Moi aussi j'ai un message de demande d'aide, j'attend 1 semaine avant de faire un up.
En espèrant que tu comprennes, et que tu en tiendras compte.
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question