Bonjour à tous,
Je suis en train de programmer une class objet en Java, un Poisson qui hérite d'un Animal. Je voudrais faire en sorte que lorsque l'utilisateur crée un poisson en précisant en paramètre un type d'eau qui n'existe pas, le programme le lui redemande et ce jusqu'à ce qu'il saisisse une valeur correcte. Puis il crée le Poisson avec la valeur valide saisie en dernier lieu.
J'aurais volontiers utilisé une boucle while, mais notre prof veut qu'on gère ça avec les Exceptions (on a eu à peine un quart d'heure de cours dessus, donc on doit apprendre à les maîtriser soi-même, un classique).
Voici ma classe Animal:
Puis ma classe Poisson
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 class Animal { private String nom; private String nourriture; private String categorie; //Pour creer un animal d'une categorie etrangere a celles du zoo. public Animal (String nom, String nourriture, String categorie) { this.nom=nom; this.nourriture=nourriture; this.categorie=categorie; } public Animal (String nom, String nourriture) { this.nom=nom; this.nourriture=nourriture; this.categorie="Aucune"; } public Animal () { this.nom="Sans nom"; this.nourriture="Rien"; this.categorie="Categorie non mentionnee"; } public void setCategorie (String categ) { this.categorie=categ; } public String toString () { return(this.nom+" est un "+this.categorie+" qui mange "+this.nourriture); } }
Ma classe IncompatibleException (je ne sais pas faire plus que ça)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 class Poisson extends Animal { private String type_eau; private String[] types_eau = {"Eau Douce", "Eau de Mer"}; public Poisson (String nom, String nourriture, String type_eau) { super(nom,nourriture); super.setCategorie("Poisson"); try { Listeur.compatibilite(type_eau, this.types_eau); this.type_eau=type_eau; } catch (IncompatibleException e) { System.out.println(e.getMessage()); String a = new String (Saisie.litexte()); Poisson (nom, nourriture, a); } } public Poisson (String nom, String nourriture) { super(nom,nourriture); super.setCategorie("Poisson"); this.type_eau="Eau de Mer"; } public Poisson () { super(); super.setCategorie("Poisson"); } public String toString() { return(super.toString()+" Il nage dans de l'"+this.type_eau); } }
Et enfin, ma classe Listeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class IncompatibleException extends Exception { public IncompatibleException (String mess) { super(mess); } }
Problème: La phrase en italique/gras/gros dans la classe Poisson ne fonctionne pas. Il me dit qu'il n'existe pas de constructeur de type (String String String) pour l'objet Poisson. Qu'est-ce que j'ai comme alternative?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 public class Listeur { public static void compatibilite (String mot, String liste[]) throws IncompatibleException { int i=0; while (i<liste.length && !mot.equals(liste[i])) { i++; } if (i==liste.length) //"mot" n'est pas dans "liste" { String toto="Merci de saisir l'une des valeurs ci-dessous en respectant la casse:\n\n- "; for (int j=0; j<liste.length-1; j++) { toto=toto+liste[j]+"\n- "; } toto=toto+liste[liste.length-1]+"\n\n"; IncompatibleException ie = new IncompatibleException (mot+" n'est pas une valeur appropriee. "+toto); throw ie; } } }
PS: Merci de ne pas trop donner d'importance aux imperfections de mon programme au niveau code/performance, je suis hyperdébutant et je préfère d'abord régler le problème mentionné, après on verra.
Merci de votre aide.
Partager