Exception tabaleau JAVA

Fermé
HI - 31 déc. 2011 à 21:37
 HI - 2 janv. 2012 à 04:12
salut,,,
je debut avec java et un probleme d'exception mais je ne sais pas comment le résoudre SVP si vous pouvez m'aider merci voici le code:
public class TableauObject {
private Object tab[];
private int taille;
// private int pos;
public TableauObject (int t){
if (t>0) { tab =new Object[t];
taille=t; }



}
public int gettaille() {return taille;}
public int getObject (int pos) {return tab [pos];}
public void setcase (int pos , Object obj) {tab [pos]= obj;}
public static void main(String []args){


}

}
A voir également:

1 réponse

tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 122
31 déc. 2011 à 22:18
Bonjour,

Premièrement, il y aune erreur dans le type de retour de la méthode getObject. Le type de retour doit être Object et non pas int.

Pendant votre manipulation, si vous introduisez une position supérieure ou égale à la taille du tableau alors vous provoquerez une exception, alors il faut modifier les méthodes:

public Object getObject (int pos) {

    if(pos >= taille)
         return null;
    return tab [pos];

}


public boolean setcase (int pos , Object obj) {

     if(pos >= taille)
          return false;
     tab [pos]= obj;
     return true;

} 


Bon Courage.
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
1 janv. 2012 à 00:59
Quitte à faire le test pos>=taille, je rajouterai le cas pos<0 en faisant if(pos<0 || pos >= taille)
Cependant je ne suis pas trop pour remplacer l'objet par null dans getObject, parce que cela risque de provoquer un NullPointerException dans la suite du code, alors qu'un ArrayOutOfBoundsException.est plus simple à déboguer.
0
merci....KX je te suis pas bien comme je debute si tu peux m'orienté vers un tutorial ou me donné plus de détaille stp merci encore :)
0
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
1 janv. 2012 à 16:57
Si tu fais getObject(n) avec n<0 ou n>taille, ça va te renvoyer un ArrayOutOfBoundsException.
Le code de tarek_dotzero, shunte cette exception en remplaçant l'objet par null dans le cas n>taille, mais pas dans le cas n<0 qu'il faudrait donc rajouter.
Cependant cela signifie que tu vas renvoyer null lorsque les indices sont invalides, tu ne vas donc pas pouvoir utiliser cet objet car il va renvoyer NullPointerException. Essayes par exemple ce code :
System.out.println(getObject(-2).toString());

Tu vas donc remplacer ArrayOutOfBoundsException par NullPointerException, mais en perdant une information, puisque tu ne sauras pas quel indice du tableau t'as provoqué l'erreur (-2 ici)
0
merci bcp KX
0