ToString pour un enum

Résolu
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 4 mars 2009 à 23:01
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 5 mars 2009 à 07:44
bonjour a tous, j'ai fais une fonction toString() pour un enum, elle fonctionne mais je pense qu'elle peut être améliorée, cependant je ne vois pas comment.
Je compte sur vous...

public enum Symbole {
    maison,
    ballon,
    etoile,
    fanion,
    arbres;
    public static int NBR_SYMBOLE=Symbole.values().length;

    public static int getNBR_SYMBOLE() {
        return NBR_SYMBOLE;
    }

    public static void setNBR_SYMBOLE(int nbr_symbole) {
        NBR_SYMBOLE = nbr_symbole;
    }

    public String toString() {
        int num=0;
        String res="";
        Symbole[] tableauSymbole=Symbole.values();
        for(int i=0;i<NBR_SYMBOLE;i++){
            if(this==tableauSymbole[i]){
                num=i;
            }
        }
        switch(num){
        case 0: res+="maison";
        break;
        case 1: res+="ballon";
        break;
        case 2: res+="etoile";
        break;
        case 3: res+="fanion";
        break;
        case 4: res+="arbres";
        break;
        }
        return res;
       
    }

Depuis quelque temps, je fais beaucoup appel a ce forum pour me venir en aire, je vous remercie tous, en particulier DarkSidious qui a répondu a absolument toutes les questions que j'ai posé pour l'instant.

2 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
5 mars 2009 à 03:28
salut

cette fonction existe deja, tu n'es pas oblige de la definir toi meme.

si tu y tiens vraiment, alors tu peux utiliser :
num = this.ordinal();
a la place de :
for(int i=0;i<NBR_SYMBOLE;i++){
if(this==tableauSymbole[i]){
num=i;
}
}
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 mars 2009 à 07:44
Salut,

Améliorée en quel sens ?

Si c'est de stocker le nom des éléments :

public enum Symbole {
   private String nom;

    maison("maison"),
    ballon("ballon"),
    etoile("étoile"),
    fanion("fanion"),
    arbres("arbres");

    public Symbole(String nom) {
        this.nom = nom;
    }

    public String toString() {
        return this.nom;
    }
}

Sinon, concernant ton enum :
public enum Symbole {
    maison,
    ballon,
    etoile,
    fanion,
    arbres;
    public static int NBR_SYMBOLE=Symbole.values().length; // à quoi ca sert ?

    public static int getNBR_SYMBOLE() { // à remplacer par un ordinal comme l'a indiqué notre ami coucou747
        return NBR_SYMBOLE;
    }

    public static void setNBR_SYMBOLE(int nbr_symbole) { // à quoi ca sert ???Le but n'est pas de savoir combien de symbole tu as ?
        NBR_SYMBOLE = nbr_symbole;
    }

    public String toString() { // Quel est son rôle ? Retourner l'élément courant ou la liste des éléments ? Dans ton cas, elle ne renverra que l'élément courant, elle se serait plus simple en stockant le nom de l'élément directement dans l'enum...
        int num=0;
        String res="";
        Symbole[] tableauSymbole=Symbole.values();
        for(int i=0;i<NBR_SYMBOLE;i++){
            if(this==tableauSymbole[i]){
                num=i;
            }
        }
        switch(num){
        case 0: res+="maison";
        break;
        case 1: res+="ballon";
        break;
        case 2: res+="etoile";
        break;
        case 3: res+="fanion";
        break;
        case 4: res+="arbres";
        break;
        }
        return res;
       
    }

Si tu veux, tu peux aller voir ma source de la liste des départements pour voir un exemple concret d'une enum "qui fait papa maman"
______________________________________
DarK Sidious
0
Rejoignez-nous