IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[débutant] String ou int


Sujet :

Langage Java

  1. #21
    Membre Expert
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Par défaut
    public Canari(String _identifiant,String _sexe) {
    identifiant= bague+"."+stam+"."+year;
    sexe=_sexe;
    }
    A quoi sert ton argument String _identifiant?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      public Canari(String _sexe) { 
        identifiant= bague+"."+stam+"."+year;    
        sexe=_sexe;       
       }

  2. #22
    Membre Expert
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Par défaut
    Redefini egalement tes methodes :
    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
    public class Canari { 
        private String identifiant; 
        private String sexe; 
        private int stam; 
        private int bague; 
        private int year; 
     
       public Canari() {} 
     
       public Canari(String _sexe) { 
        identifiant= bague+"."+stam+"."+year;    
        sexe=_sexe;       
       } 
     
       public String getSexe() { return sexe;} 
       public int getStam() { return stam;}        
       public int getBague() { return bague;} 
       public int getYear() { return year;}  
     
       public void setSexe(String _sexe) { 
            this.sexe=_sexe;
       } 
       public void setStam(int _stam) { 
           this.stam=_stam;
          identifiant= bague+"."+stam+"."+year;   
       } 
       public void setBague(int _bague) { 
           this.bague=_bague;
           identifiant= bague+"."+stam+"."+year;   
       } 
       public void setYear(int _year) { 
           this.year=_year;
            identifiant= bague+"."+stam+"."+year;   
       }        
    }

  3. #23
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    [quote="viena"]
    A quoi sert ton argument String _identifiant?
    [quote]

    Pour moi un canari, c'est un identifiant, un sexe, un pére, une mére.
    je suis de + en + paumé....

  4. #24
    Membre Expert
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Par défaut
    vi, mais dans ton constructeur, tu passes un argument "identifiant", mais tu t'en sert pas...
    moi je passerai plutot un stam une bague et un year pour contruire l'identifiant apres a voir ton code...
    mais bon...

  5. #25
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    Pour ajouter un canari dans un fichier xml, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                    String bague = comboBague.getSelectedItem().toString();
            	String stam = textStam.getText();
            	String year = textYear.getText();
            	String indentifiant = bague+"."+stam+"."+year;
            	String sexe = comboSexe.getSelectedItem().toString();
            	Canari unCanari = new Canari(indentifiant,sexe);
    Mon but est d'avoir un code propre qui me permet:

    D'avoir un numéro identifiant de type Bague.Stam.Year
    De pouvoir récupérer l'année sans devoir décomposer l'identifiant

    De plus, par la suite (il faut peut être que j'y pense maintenant d'ailleurs lol) je veux associer au canari l'identifiant de son père et de sa mére.


  6. #26
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    Et comme ç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
     
    public class Canari { 
        private String identifiant; 
        private String sexe; 
        private int stam; 
        private int bague; 
        private int year; 
     
       public Canari() {} 
     
       public Canari(String _identifiant,String _sexe) { 
        identifiant= _identifiant;	
        sexe=_sexe;   	
       } 
       public String getIdentifiant() { return identifiant;}
       public String getSexe() { return sexe;}
     
       public int getBague(String _identifiant) { return bague;}
       public int getStam(String _identifiant) { return stam;}         
       public int getYear(String _identifiant) { return year;}  
     
       public void setIdentifiant(String _identifiant){_identifiant= bague+"."+stam+"."+year;}
    }
    :

  7. #27
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public int getBague(String _identifiant) { return bague;}
    public int getStam(String _identifiant) { return stam;}         
    public int getYear(String _identifiant) { return year;}
    Ces trois méthodes sont incorrect.
    Les attributs bague, stam et year ne sont jamais initialisé...
    De plus, pourquoi passé _identifiant en paramètre ? surtout que ce n'est pas utilisé...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void setIdentifiant(String _identifiant){_identifiant= bague+"."+stam+"."+year;}
    Tu ne peut pas modifier une String passé en paramètres...
    Cette méthode "ne fait rien"...

    Tu devrais lire des cours sur la prog. Java car j'ai l'impression que tu t'embrouilles un peu...



    Tu as un objet Canari.
    Qu'est-ce qui caractérise un Canari ?
    4 attributs :
    • sexe
      stam
      bague
      year

    identifiant n'est pas un vrai attributs du fait qu'il est constitué de la valeur de 3 autres attributs

    Donc on obtient le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Canari {
    	private String sexe;
    	private int stam;
    	private int bague;
    	private int year;
     
    	public String getSexe () { return this.sexe; }
    	public int getStam () { return this.stam; }
    	public int getBague () { return this.bague; }
    	public int getYear () { return this.year; }
    }
    Ton identifiant est créé avec les valeurs de tes différents attributs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public String getIdentifiant () {
    	return this.stam + "." + this.bague + "." + this.year;
    }
    Maintenant il faut ecrire les constructeurs.
    Le role d'un constructeur est d'initialisé les attribut d'une classe.

    Tu as deux choix : soit tu lui passes TOUT les attributs de ta classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public Canari (String sexe, int stam, int bague, int year) {
    	this.sexe = sexe;
    	this.stam = stam;
    	this.bague = bague;
    	this.year = year;
    }
    Soit tu lui passe un identifiant que tu découpes pour récuperer les autres attributs (cf. mon code de debut de la 2nd page)

    a++

  8. #28
    Membre Expert
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Par défaut
    perso, je trouve ca pourri d'envoyer en argument du constructeur un champs construit par d'autre attribut...
    de meme, je vois pas l'interet de mettre en memoire l'attribut or que tu as ses composantes!
    Ton bean, selon moi, doit resembler a ca :
    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
    public class Canari { 
        private String sexe; 
        private int stam; 
        private int bague; 
        private int year; 
     
       public Canari() {} 
     
       public Canari(int _stam,int _bague,int _year,String _sexe) { 
        stam=_stam;
        year=_year;
        bague=_bague;
        sexe=_sexe;       
       } 
       public String getIdentifiant() { return "" bague+"."+stam+"."+year ;} 
       public String getSexe() { return sexe;} 
     
       public int getBague(String _identifiant) { return bague;} 
       public int getStam(String _identifiant) { return stam;}          
       public int getYear(String _identifiant) { return year;}  
     
    //+setters si besoin
    }
    Pareil, pour la suite, sache qu'en vision objet, on mettrait plutot des references sur les objets "mere" et "pere" que leur identifiants (ce qui est plus une vision merisienne).
    Cependant, si tu as un graphe tres lours... pourquoi pas...

  9. #29
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    Effectivement je m'embrouille les pinceaux aujourd'hui !

    Je souhaite stocker dans mon fichier.xml les données comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <Annee>
     <Canari>
      <identifiant>1.1212.03</identifiant>
      <sexe>mâle</sexe>
      <pere>87.1212.01</pere>
      <mere>56.5493.02</mere>
     </Canari>
     <Canari></Canari>
     <Canari></Canari>
    </Annee>
    En faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public Canari(int _stam,int _bague,int _year,String _sexe) { 
        stam=_stam; 
        year=_year; 
        bague=_bague; 
        sexe=_sexe;        
       }
    je stocke dans mon fichier.xml les données comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <Annee>
     <Canari>
      <bague>1.1212.03</bague>
      <stam>1212</stam>
      <year>03<year>
      <sexe>mâle</sexe>
      <pere>87.1212.01</pere>
      <mere>56.5493.02</mere>
     </Canari>
     <Canari></Canari>
     <Canari></Canari>
    </Annee>
    Le problème est que je vais avoir beaucoup de champ par canari en plus.
    De plus, je veux éviter de faire lors d'une recherche dans mon fichier.xml
    une recherche de type :
    bague & stam & year

    Toutes les informations contenues dans le fichier.xml sont affichées dans une JTable.
    je souhaite éviter d'avoir plusieurs colonnes
    |bague|stam|year|.....


    Comment puis-je récupérer les différents composant de l'identifiant si je fais:
    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
     
    public class Canari { 
        private String identifiant; 
        private String sexe; 
     
       public Canari() {} 
     
       public Canari(String _identifiant,String _sexe) { 
       	identifiant=_identifiant;
        sexe=_sexe;	   	
       } 
     
       public String getIdentifiant() { return identifiant;}
       public String getSexe() { return sexe;}
     
       public void setIdentifiant(String _identifiant){identifiant=_identifiant;}
       public void setSexe(String _sexe) { sexe=_sexe;} 
    } 
    }
    :

    Je sais que c'est prendre le problème à l'envers par rapport à votre raisonement, mais je souhaite avoir un canari avec les arguments (identifiant et sexe)
    Si j'utilise les arguments (bague, stam, year,sexe), je reviens en arrière et ne fais pas avancer le chmilblique (c'est aussi dur à l'écrire qu'a prononcer...lol)
    Lorsqu'une personne va consulter manuellement le fichier.xml, ça sera beaucoup plus parlant de voir directement l'identifiant.

    Et si je peux par la suite décomposer l'identifiant facilement par la suite, c'est le top !

    Du genre :
    getStam(1.1212.03)
    Résultat = 1212

    Merci pour votre aide et pour votre patience

  10. #30
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Par exemple :

    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
    public class Canari {
     
    	private String sexe;
    	private int bague;
    	private int stam;
    	private int annee;
     
     
    	public Canari(String identifiant, String _sexe) throws Exception {
    		String[] tab = identifiant.split ("\\.");
     
    		if (tab.length!=3)
    			throw new Exception ("Identifiant incorrect [" + identifiant + "].");
    		stam  = Integer.parseInt (tab[0]);
    		bague = Integer.parseInt (tab[1]);
    		annee = Integer.parseInt (tab[2]);
    		sexe  = _sexe;
     
    	}
     
    	public String getSexe () { return this.sexe; }
    	public int getStam () { return this.stam; }
    	public int getBague () { return this.bague; }
    	public int getYear () { return this.year; } 
     
    	public String getIdentifiant () {
    		return this.stam + "." + this.bague + "." + this.year;
    	}
    }
    Lorsque tu crée un objet Canari avec les infos récupéré depuis le XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Canari c = new Canari (identifiant, sexe);
    Le constructeur découpe les différents champs de l'identifiant et renseigne les attributs de la classe.
    Dans le premier code posté j'avais oublié les Integer.parseInt()

    Tu peux très bien utiliser un attribut identifiant.
    En le regénérant cela permet de modifier les attributs bague, stam et year (avec des eventuels setters) et de repercuter automatiquement sur l'identifiant...

  11. #31
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    Ok merci

    et pour les setter.... je fais comment?

    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
     
    public class Canari { 
        private String identifiant; 
        private String sexe;
        private int bague; 
        private int stam; 
        private int year; 
     
       public Canari() {} 
     
       public Canari(String _identifiant,String _sexe) throws Exception{ 
       	 String[] tab = _identifiant.split ("\\."); 
     
         if (tab.length!=3) 
           {throw new Exception ("Identifiant incorrect [" + identifiant + "]."); }
         stam  = Integer.parseInt (tab[0]); 
         bague = Integer.parseInt (tab[1]); 
         year = Integer.parseInt (tab[2]); 
         sexe  = _sexe; 
       } 
     
       public String getSexe () { return sexe; } 
       public int getStam () { return stam; } 
       public int getBague () { return bague; } 
       public int getYear () { return year; } 
       public String getIdentifiant () { return stam + "." + bague + "." +year; } 
     
    }

  12. #32
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2004
    Messages : 85
    Par défaut
    Tu t'obstines à vouloir garder une variable identifiant...
    [référencé dans le bout de code que tu viens de mettre en exemple, est-ce volontaire ?, si c'est le cas :
    En interne à ta classe, tu n'en as pas besoin, juste ? C'est donc d'autres objets ou références de Canaris qui vont demander quel est l'identifiant de ton canari courant, juste ?

    Donc, la méthode suivante suffi...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public String getIdentifiant () { 
          return this.stam + "." + this.bague + "." + this.year; 
    }
    ]

    Ce qui te donne comme setter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       public void setSexe (String _sexe) { sexe=_sexe; } 
       public void setStam (int _stam) { stam=_stam; } 
       public void setBague (int bague) { bague=_bague; } 
       public void setYear (int _year) { year=_year; }

  13. #33
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    c'est juste... c'est pourquoi j'ai adopté le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public String getIdentifiant () { 
          return this.stam + "." + this.bague + "." + this.year; 
    }
    de adiGuba

    Merci pour les setters

  14. #34
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2004
    Messages : 85
    Par défaut
    Citation Envoyé par pingoui
    c'est juste... c'est pourquoi j'ai adopté le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public String getIdentifiant () { 
          return this.stam + "." + this.bague + "." + this.year; 
    }
    de adiGuba

    Merci pour les setters
    J'y ai pensé... C'est pourquoi j'ai mis des "[ ]"... C'était au cas où...

    ça semble jouer maintenant ?

  15. #35
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    Merci beaucoup pour votre patience.... vous êtes tous extra

    Dans le reste de mon code,
    J'ai une méthode pour modifier l'identifiant d'un canari par exemple.

    Pour cela, je recherche les canaris correspondant à l'identifiant puis je "faisait" un setNom

    Le nom correspondais avant à mon identifiant !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
           public void setCanari(String oldIdentifiant, String newIdentifiant){
           	  Canari canariAModifier = getCanari(nomCanari);       	  
           	  if(canariAModifier!=null) canariAModifier.setIndentifiant(newIdentifiant);
           }
    Vous voyez donc dans l'exemple précédent que je ne peux directement pas "setter" l'identifiant.

    Comment puis-je faire pour modifier l'identifiant? Dois-je setter bague, stam et year???
    merci

  16. #36
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2004
    Messages : 85
    Par défaut
    Tu peux faire une méthode du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public void setIdentifiant(String _identifiant) throws Exception {
       String[] tab = _identifiant.split ("\\."); 
     
       if (tab.length!=3) 
           {throw new Exception ("Identifiant incorrect [" + identifiant + "]."); } 
       stam  = Integer.parseInt (tab[0]); 
       bague = Integer.parseInt (tab[1]); 
       year = Integer.parseInt (tab[2]);
    }
    Et alors, tu peux même changer ton constructeur en :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     public Canari(String _identifiant,String _sexe) throws Exception{ 
         setIdentifiant(_identifiant);
         sexe  = _sexe; 
       }

  17. #37
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    Ok ça me semble correct !

    Par contre, j'ai cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Unhandled exception type Exception
    En faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void setCanari(String oldIdentifiant, String newIdentifiant){ 
                Canari canariAModifier = getCanari(nomCanari);            
                if(canariAModifier!=null) canariAModifier.setIndentifiant(newIdentifiant); 
           }
    et/ou en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String bague = comboBague.getSelectedItem().toString();
            	String stam = textStam.getText();
            	String year = textYear.getText();
            	String indentifiant = bague+"."+stam+"."+year;
            	String sexe = comboSexe.getSelectedItem().toString();
    Canari unCanari = new Canari(indentifiant,sexe);
    dans ma méthode pour ajouter un canari à mon fichier !


  18. #38
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    J'ai enlevé les throws Exception et ça marche


    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
     
    public class Canari { 
     
        private String sexe;
        private int bague; 
        private int stam; 
        private int year; 
     
       public Canari() {} 
     
       public Canari(String _identifiant,String _sexe) { 
       	 setIdentifiant(_identifiant); 
         sexe  = _sexe; 
       } 
     
       public String getSexe () { return sexe; } 
       public int getStam () { return stam; } 
       public int getBague () { return bague; } 
       public int getYear () { return year; } 
       public String getIdentifiant () { return stam + "." + bague + "." + year; } 
     
     
       public void setSexe (String _sexe) { sexe=_sexe; } 
       public void setStam (int _stam) { stam=_stam; } 
       public void setBague (int _bague) { bague=_bague; } 
       public void setYear (int _year) { year=_year; }
     
       public void setIdentifiant(String _identifiant) { 
         String[] tab = _identifiant.split ("\\.");      
         /*if (tab.length!=3) 
             {throw new Exception ("Identifiant incorrect [" + _identifiant + "]."); } */
         stam  = Integer.parseInt (tab[0]); 
         bague = Integer.parseInt (tab[1]); 
         year = Integer.parseInt (tab[2]); 
       } 
    }
    Dites moi ce que vous en pensez?
    Merci pour tout !

  19. #39
    Membre Expert
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Par défaut
    Ca n'a pas l'air mal du tout

  20. #40
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2004
    Messages : 85
    Par défaut
    Le fait de lever une exception dans ta méthode permet au client qui l'a appellé de savoir que quelque chose s'est mal passé. Dans ton cas, c'est lui permettre de savoir que l'identifiant qu'il a passé est non valide. Cette fonctionnalité me paraît importante dans ton cas.

    La solution avec le "throw new Exception()" décommenté est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public void setIdentifiant(String _identifiant) throws Exception { 
       String[] tab = _identifiant.split ("\\."); 
     
       if (tab.length!=3) 
           {throw new Exception ("Identifiant incorrect [" + identifiant + "]."); } 
       stam  = Integer.parseInt (tab[0]); 
       bague = Integer.parseInt (tab[1]); 
       year = Integer.parseInt (tab[2]); 
    }
    Pour le constructeur :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public Canari(String _identifiant,String _sexe) throws Exception{ 
         setIdentifiant(_identifiant); 
         sexe  = _sexe; 
       }
    Pour les méthodes qui appelleront soit le constructeur soit la méthode setIdentifiant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //Dans le corps de la méthode cliente, instanciation de la classe Canari
    Canari canari = null;
    try{
        canari = new Canari("/*identifiant*/", "/*sexe*/");
    } catch(Exception e){
        //Suppose que ton identifiant est invalid (ex : 1234), comment réagit
       //l'instance canari sans le fait de lever une exception ? Et bien tu as une
       //instance canari qui est invalide. En levant une exception, tu vas
       //passer par le catch de l'exception et pouvoir faire un traitement... 
       //(Donc par ce bout de code...)
    }
    Les exceptions en java ne sont pas seulement pour que le développeur se dise, "Et merde, encore une erreur...", mais pour avertir le développeur que l'execution du code a eu un problème. D'ailleur, la plupart des exceptions levées, sont catchée et donc traitées et donc invisible au client. Une bonne gestion d'exceptions fait partie te toute bonne analyse java.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [débutant] convertir string en int
    Par MayOL69bg dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/04/2007, 10h20
  2. Réponses: 4
    Dernier message: 23/11/2005, 17h28
  3. [Débutant] Conversion d'un String en Int
    Par chleuh dans le forum Langage
    Réponses: 9
    Dernier message: 30/12/2004, 13h33
  4. Réponses: 2
    Dernier message: 21/06/2004, 15h55
  5. [FLASH MX 2004] conversion string en int.
    Par calfater dans le forum Flash
    Réponses: 3
    Dernier message: 26/05/2004, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo