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

Collection et Stream Java Discussion :

Méthode retournant un tableau de double


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Gestionnaire d'applications
    Inscrit en
    Janvier 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Gestionnaire d'applications

    Informations forums :
    Inscription : Janvier 2010
    Messages : 32
    Par défaut Méthode retournant un tableau de double
    j'ai une methode qui extrait le cout ,d'une base de données, pour une personne ou direction ,par mois, passé en parametre et qui retourne un tableau de double
    mon problème c'est qu'on je fait appel a cette fonction il me retourne un tableau remplit de ces valeurs 0.0 sachant qu'apres le resultset je fais un println de l'element courant du tableau et il me retourne la valeur exacte du cout je sais d'ou vient le probleme voici mon code
    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
        public void StatementMethod(PreparedStatement st,String nom,String Direction,int Annee,String MOIS) throws SQLException
        {
            int i=1;
            if(nom!=null)
            {
                st.setString(i,nom);i++;
            }
            if(Direction!=null)
            {
                st.setString(i,Direction);i++;
            }
            st.setInt(i,Annee);i++;
            st.setString(i,MOIS);
            if(Direction!=null || nom!=null)
                couts = new double[12];
            else if(Direction==null && nom==null)
                couts = new double[12*SelectionDirections().length];
     
        }
        public String ReturnQuery(String nom,String Direction)
        {
            String req="";
            if(nom==null && Direction!=null)
            {
                req="SELECT SUM(COUT) FROM REPORTING_FIXE WHERE INTITULE_DIRECT=? AND ANNEE=? AND MOIS=? ";
            }
            else if(nom!=null && Direction!=null)
            {
                req="SELECT SUM(COUT) FROM REPORTING_FIXE WHERE DIRECTIONS=? AND INTITULE_DIRECT=? AND ANNEE=? AND MOIS=? ";
            }
            else if(nom==null && Direction==null)
            {
                req="SELECT SUM(COUT) FROM REPORTING_FIXE WHERE  ANNEE=? AND MOIS=? group by intitule_direct";
            }
            else if(nom!=null && Direction==null)
            {
                req="SELECT SUM(COUT) FROM REPORTING_FIXE WHERE Directions=? AND  ANNEE=? AND MOIS=? group by intitule_direct";
            }
            return req;
        }
        public double[] ReportingFixCout(String nom,String Direction,int Annee)
        {
            int compteur=0;
            String req=ReturnQuery(nom, Direction);
            String[] MOIS = {"JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"};
            for(int j=0;j<MOIS.length;j++)
            {
                int i=1;
                try
                {
                    Connection conn = SingletonConnection.getConnection();
                    PreparedStatement st = conn.prepareStatement(req);
                    System.out.println(req);
                    if(nom!=null && Direction!=null)
                    {
                        StatementMethod(st, nom, Direction, Annee,MOIS[j]);
                    }
                    else if(nom==null && Direction!=null)
                    {
                        StatementMethod(st, null, Direction,Annee,MOIS[j]);
                    }
                    else if(nom==null && Direction==null)
                    {
                        StatementMethod( st, null, null, Annee , MOIS[j] );
     
                    }
                    else if(nom!=null && Direction==null)
                    {
                        StatementMethod( st, nom, null, Annee , MOIS[j] );
                    }
                    ResultSet rs = st.executeQuery();
                    while (rs.next()) 
                    {
                        couts[compteur]=rs.getDouble(1);
                        System.out.println("k : "+compteur+ " \t" +couts[compteur]+"\t"+rs.getDouble(1));compteur++;
                    }
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                }
            }
            return couts;
        }

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    concrètement, ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("k : "+compteur+ " \t" +couts[compteur]+"\t"+rs.getDouble(1));compteur++;
    vous affiche quoi? Aussi, vous devriez éviter l'emploi d'un champ pour y stocker des valeur de retour. autrement dit, créez un nouveau double[] pour le résultat dans votre code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
                    ArrayList<Double> resultat = new ArrayList<Double>();
                    ResultSet rs = st.executeQuery();
                    while (rs.next()) 
                    {
                        resultat.add(rs.getDouble(1));
                    }
                    double[] tabResult = new double[resultat.size()];
                    int compteur = 0;
                    for (Double d : resultat) tabResult[compteur++]=d;
                    return tabResult;

  3. #3
    Membre averti
    Profil pro
    Gestionnaire d'applications
    Inscrit en
    Janvier 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Gestionnaire d'applications

    Informations forums :
    Inscription : Janvier 2010
    Messages : 32
    Par défaut
    voila le resultat retournée par les println situées a l'interieur de la methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT SUM(COUT) FROM REPORTING_FIXE WHERE Directions=? AND  ANNEE=? AND MOIS=? group by intitule_direct
    k : 0 	633.480000000001	633.480000000001
    SELECT SUM(COUT) FROM REPORTING_FIXE WHERE Directions=? AND  ANNEE=? AND MOIS=? group by intitule_direct
    k : 1 	477.129999999999	477.129999999999
    SELECT SUM(COUT) FROM REPORTING_FIXE WHERE Directions=? AND  ANNEE=? AND MOIS=? group by intitule_direct
    k : 2 	280.02	280.02
    SELECT SUM(COUT) FROM REPORTING_FIXE WHERE Directions=? AND  ANNEE=? AND MOIS=? group by intitule_direct
    k : 3 	329.1	329.1
    SELECT SUM(COUT) FROM REPORTING_FIXE WHERE Directions=? AND  ANNEE=? AND MOIS=? group by intitule_direct
    k : 4 	291.83	291.83
    et merci pour votre reponse

  4. #4
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Le tableau couts est donc bien rempli. Cependant, comme tchize le signalait, vu qu'il s'agit d'une donnée membre de la classe, elle peut être modifiée par la suite - en particulier par une autre requete !

  5. #5
    Membre averti
    Profil pro
    Gestionnaire d'applications
    Inscrit en
    Janvier 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Gestionnaire d'applications

    Informations forums :
    Inscription : Janvier 2010
    Messages : 32
    Par défaut
    Merci beaucoup votre reponse m'etait tres utile mon probleme a ete resolu grace a vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Fonction Retourner un tableau a double entree
    Par Lnmex dans le forum Excel
    Réponses: 1
    Dernier message: 09/04/2014, 03h03
  2. retourner un tableau de doubles
    Par douze_12 dans le forum VB.NET
    Réponses: 1
    Dernier message: 29/03/2012, 09h58
  3. méthode qui retourne un tableau
    Par azertyuio dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 25/03/2010, 17h32
  4. méthode qui retourne un tableau de chaines de caracteres
    Par Camel200 dans le forum Débuter
    Réponses: 2
    Dernier message: 10/02/2009, 15h36
  5. comment retourner un tableau de double à VBA
    Par geminium dans le forum Général VBA
    Réponses: 2
    Dernier message: 01/06/2007, 19h11

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