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 :

methode qui retourne soit un string soit un double?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 26
    Par défaut methode qui retourne soit un string soit un double?
    bonsoir a tous,avant d exposer mon probleme je poste le bout de code que j ai commencer a ecrire:
    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
    42
    43
    44
    45
    46
    47
    48
    public class degre2 {
    private double a,b,c,delta,Solu_1,Solu_2,Solu_1i1,Solu_1i2,Solu_2i1,Solu_2i2;   //declaration des variables necessaire a la resolution d une equation du second degre
     
    private String imagi1,imagi2;
     
    degre2(double ar,double br,double cr ) //constructeur qui initialise a,b,c 
    {
    a=ar;
    b=br;
    c=cr;
    }
    double delta() //methode qui calcul  et retourne delta 
    {
    delta = (b*b)-(4*a*c);
    return delta;
    }
     
    void Solu_1() //method qui calcul  solutuon 1
    {
    delta();
    if (delta >=0)
    {
    Solu_1 = (-b -(Math.sqrt(delta))/(2*a));
     
    }
    else
    {
    Solu_1i1=-b/2*a;
    Solu_1i2=(Math.sqrt(-delta))/(2*a);
    }
    }
    void Solu_2() //methode qui calcule  solution 2
    {
    delta();
    if (delta >=0)
    {
    Solu_2 = (-b +(Math.sqrt(delta))/(2*a));
     
    }
    else
    {
    Solu_2i1=-b/2*a;
    Solu_2i2=(Math.sqrt(-delta))/(2*a);
    }
     
    }
     
    }
    Voila en fait j aimerai creer deux methode,GetSolu1() et GetSolu2() qui retournerai suivant que delta soit positif ou negatif soit un double,soit un string.
    Mais je coince je sais pas comment m y prendre.
    Si vous avez des conseil je suis preneur.
    merci.

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Ce n'est tout simplement pas possible...

    Le mieux est de créer (ou d'utiliser si tu en trouves une déjà implémentée) une classe "Complexe" ayant une partie réelle et une partie imaginaire. Ta méthode renverrait toujours un "Complexe".

    Si tu veux absolument t'en tenir à ton idée, ta méthode peut renvoyer un "Object", qui serait soit un Double (avec un D majuscule), soit une String. Mais cette manière de programmer est on ne peut plus sale!!!
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre chevronné Avatar de T`lash
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2007
    Messages : 381
    Par défaut
    Sans même regarder ton code je ne connais qu'une solution que je ne trouve pas forcément optimale :

    Tu crées une classe qui va encapsuler ta réponse.

    Tes méthodes GetSolu1() et GetSolu2() - c'est pas bien les majuscules en début de méthodes - retournent une instance de cette classe.

    Cette classe pourrait être comme suit :

    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
    private class Solu {
      private double doubleSolu = -1;
      private String stringSolu = null;
      private final isString;
     
      private Solu(double d) {
        this.doubleSolu = d;
        this.isString = false;
      }
     
      private Solu(String s) {
        this.stringSolu = s;
        this.isString = true;
      }
     
      public boolean isStringSolu(){
        return isString;
      }
     
      public double getDoubleSolu(){
        return doubleSolu;
      }
     
      public String getStringSolu(){
        return stringSolu;
      }
     
    }
    Comme je l'ai dit, je ne trouve pas ça très propre.
    Il y a certainement une autre solution (un design pattern ?).

  4. #4
    Membre chevronné Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Par défaut
    A la base vouloir renvoyer 2 types différents c'est pas propre ou pas bien étudié.

    Donc on ne pourra pas faire un truc propre en partant de ce principe.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 26
    Par défaut
    oui je crois que je vais essayer de prendre le probleme sous un autre angle.
    Je vais essayer de creer une class polynome.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 26
    Par défaut
    j ai ecrit ca comme ca qu en pensez vous maintenant?
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    public class polynome
    {
     
    double a,b,c,delta,solution1,solution2;
    String soluComp1,soluComp2;
     
    //constructeur qui initialise a,b et c
     
    polynome(double ia,double ib,double ic)
    {
    a=ia;
    b=ib;
    c=ic;
    }
     
    //methode pour calculer Delta et retourner Delta
     
    double calculDelta()
    {
    delta = -b-(4*a*c);
    return delta;
    }
     
    //methode qui calcul et retourne solution1
     
    double calculS1()
    {
    solution1 = (-b-Math.sqrt(delta))/(2*a);
    return solution1;
    }
     
    //methode qui calcul et retourne solution2
     
    double calculS2()
    {
    solution2 = (-b+Math.sqrt(delta))/(2*a);
    return solution2;
    }
     
    //methode qui calcul solution complexe 1 et la retourne en chaine de caractere
     
    String calculScomp1()
    {
    soluComp1 =((-b/(2*a))+" "+(-Math.sqrt(-delta)/(2*a))+"i");
    return soluComp1;
    }
     
    //methode qui calcul solution complexe 2 et la retourne en chaine de caractere
     
    String calculScomp2()
    {
    soluComp2 =((-b/(2*a))+" +"+(+Math.sqrt(-delta)/(2*a))+"i");
    return soluComp2;
    }
    }

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 26
    Par défaut
    voila ou j en suis dans mon projet il me restera plus qu a ajouter le graph.
    c un proje note en dut j espere que vous pourrez m aider a rendre le code jolie

    polynome.java:
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    public class polynome
    {
     
    double a,b,c,delta,solution1,solution2;
    String soluComp1,soluComp2;
     
    //constructeur qui initialise a,b et c
     
    polynome(double ia,double ib,double ic)
    {
    a=ia;
    b=ib;
    c=ic;
    }
     
    //methode pour calculer Delta et retourner Delta
     
    double calculDelta()
    {
    delta = (b*b)-(4*a*c);
    return delta;
    }
     
    //methode qui calcul et retourne solution1
     
    double calculS1()
    {
    solution1 = (-b-Math.sqrt(delta))/(2*a);
    return solution1;
    }
     
    //methode qui calcul et retourne solution2
     
    double calculS2()
    {
    solution2 = (-b+Math.sqrt(delta))/(2*a);
    return solution2;
    }
     
    //methode qui calcul solution complexe 1 et la retourne en chaine de caractere
     
    String calculScomp1()
    {
    soluComp1 =((-b/(2*a))+" "+(-Math.sqrt(-delta)/(2*a))+"i");
    return soluComp1;
    }
     
    //methode qui calcul solution complexe 2 et la retourne en chaine de caractere
     
    String calculScomp2()
    {
    soluComp2 =((-b/(2*a))+" +"+(+Math.sqrt(-delta)/(2*a))+"i");
    return soluComp2;
    }
    }
    fenetre.java:

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
     
    public class fenetre extends JFrame {
    JButton Calculer,AfficherGraph,Quitter;
    JLabel label1,label2,label3;
    JTextField recupa,recupb,recupc;
    JTextArea text1;
    JPanel panneau1,panneau2;
     
    //gestion des evenement pour les elements de controle
     
    class ecouteur implements ActionListener {
    public void actionPerformed(ActionEvent e) {
    String boutton;
    boutton= e.getActionCommand();
    if(boutton.equals("Calculer"))
    {
    initialisePoly();
     
    }
    if(boutton.equals("Quitter"))
    {
    System.exit(0);
    }
    if(boutton.equals("AfficherGraph"))
    {
    }
    }
    }
     
    //constructeur
    fenetre(String titre) {
    super(titre);
     
    //creation des elements de l interface
    Calculer =new JButton("Calculer");
    AfficherGraph =new JButton("AfficherGraph");
    Quitter=new JButton("Quitter");
    label1=new JLabel("Enter les valeur pour a,b et c");
    label2=new JLabel("X² + ");
    label3=new JLabel("X + ");
    recupa=new JTextField(4);
    recupb=new JTextField(4);
    recupc=new JTextField(4);
    text1=new JTextArea(4,40);
    panneau1 =new JPanel(); //va recevoir text1
    panneau1.setLayout(new FlowLayout());
    panneau1.setBackground(Color.yellow);
    panneau1.add(text1);
     
    panneau2 = new JPanel();//va afficher le Graph
    panneau2.setLayout(new FlowLayout());
    panneau2.setBackground(Color.green);
    panneau2.setSize(100,100);
     
    //gestionnaire de positionnement des element de l interface
    setLayout(new FlowLayout());
     
    //integration des elements.
    add(label1);
    add(recupa);
    add(label2);
    add(recupb);
    add(label3);
    add(recupc);
    add(panneau1);
    add(panneau2);
    add(Calculer);
    add(AfficherGraph);
    add(Quitter);
     
    //fermeture de l application a la fermeture de la fenetre
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
     
    //Enregistrement des boutons
    Calculer.addActionListener(new ecouteur());
    AfficherGraph.addActionListener(new ecouteur());
    Quitter.addActionListener(new ecouteur());
    }
    //methode pour initialiser le polynome
    void initialisePoly()
    {
    double a,b,c;
    a=Double.parseDouble(recupa.getText());
    b=Double.parseDouble(recupb.getText());
    c=Double.parseDouble(recupc.getText());
     
    polynome poly =new polynome(a,b,c);
    if (poly.calculDelta() >=0)
    {
    System.out.println("delta= "+poly.calculDelta());
    System.out.println("s1= "+poly.calculS1());
    System.out.println("s2= "+poly.calculS2());
    String Afficher1,Afficher2,Afficher3; //variable qui recoivent une chaine de caractere pour envoyer dans text1 (JTexteArea)
    Afficher1=("delta=" +poly.calculDelta()+"\n");
    Afficher2=("Solution1= " +poly.calculS1() +"\n");
    Afficher3=("Solution2= " +poly.calculS2() +"\n");
    text1.setText(Afficher1+Afficher2+Afficher3);
    }
    else
    {
    System.out.println("delta= "+poly.calculDelta());
    System.out.println("s1= "+poly.calculScomp1());
    System.out.println("s2= "+poly.calculScomp2());
    String Afficher1,Afficher2,Afficher3; //variable qui recoivent une chaine de caractere pour envoyer dans text1 (JTexteArea)
    Afficher1=("delta=" +poly.calculDelta()+"\n");
    Afficher2=("Solution1= " +poly.calculScomp1() +"\n");
    Afficher3=("Solution2= " +poly.calculScomp2() +"\n");
    text1.setText(Afficher1+Afficher2+Afficher3);
    }
    }
    }
    principal.java:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class principal {
    public static void main(String[] args) {
     
     
     
    fenetre mafenetre=new fenetre("SOLVEUR EQUATION SECOND DEGRE");
    mafenetre.pack();
    mafenetre.setSize(800,600);
    mafenetre.setVisible(true);
    }
    }

Discussions similaires

  1. Méthode qui retourne une valeur aléatoire, soit 1, soit 2
    Par absot dans le forum Général Java
    Réponses: 11
    Dernier message: 15/10/2010, 09h31
  2. Methode qui retourne une liste de DateTime
    Par justine68 dans le forum C#
    Réponses: 2
    Dernier message: 06/07/2009, 15h52
  3. [jsp] Methode qui retourne un Time aprés certain calcul?
    Par adil_vpb dans le forum API standards et tierces
    Réponses: 15
    Dernier message: 10/04/2007, 13h02
  4. methode qui retourne une liste d'objets du meme type
    Par anoukhan dans le forum Oracle
    Réponses: 8
    Dernier message: 12/01/2006, 18h38
  5. Réponses: 3
    Dernier message: 15/06/2005, 10h15

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