Récupérer un tableau d'une fonction

Résolu/Fermé
wifsimster Messages postés 20 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 mai 2009 - 5 févr. 2009 à 15:55
wifsimster Messages postés 20 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 mai 2009 - 6 févr. 2009 à 08:29
Bonjour,
J'aimerai savoir comment pouvoir récupérer le tableau que me retourne ma fonction JAVA.

public int[] DateDeNaissance() throws SQLException
{
    String sql = "SELECT DATEDIFF(NOW(),Date_naissance)/365.25 FROM usager;";
    Statement stmt = con.createStatement();
    ResultSet r = stmt.executeQuery(sql);
    int[] age = null;
    int indice = 0;
    String dateNaissance = null;
    
    while(r.next())
    {
        indice = indice + 1;
        dateNaissance = r.getString(1);
        float conversion = Float.parseFloat(dateNaissance);
        age[indice] = (int) conversion;
    }
    
    return age;
}


J'ai essayé plusieurs manière, dont :

System.arraycopy(DateDeNaissance(), 0, age, 0, DateDeNaissance().length);


Toujours avec une erreur de java.lang.NullPointerException.

4 réponses

godzi44 Messages postés 41 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 17 février 2009 14
5 févr. 2009 à 16:01
java.lang.nullPointerException signifie que tu essaye de mettre une valeur dans une variable (ou tableau dans ton cas) qui n'a pas été instancié.
rajoute age = new int[TAILLE_Tableau];
et déja sa marchera beaucoup mieux ^^.
0
wifsimster Messages postés 20 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 mai 2009
5 févr. 2009 à 16:11
A quel niveau ?

Dans ma fonction :

    int[] age = null;
    age = new int[TAILLE];
    int indice = 0;


Ou dans l'utilisation ?
0
godzi44 Messages postés 41 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 17 février 2009 14
5 févr. 2009 à 16:20
dans ta fonction après le:
int[] age = null;
0
wifsimster Messages postés 20 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 mai 2009
5 févr. 2009 à 16:24
Oui donc maintenant je ne vois pas qu'elle taille mettre à mon tableau ...
0
godzi44 Messages postés 41 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 17 février 2009 14
5 févr. 2009 à 16:31
ça dépend de ce que tu doit stocker dans ton tableau!
soit tu mais une taille assez grande pour être sur de pas manquer de place.
soit tu sais que ton tableau ne contiendra pas plus de n élément et tu l'instancie à la valeur n.
0
wifsimster Messages postés 20 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 mai 2009
5 févr. 2009 à 16:36
Le problème c'est que si je l'initialise à 10 par exemple, j'ai :

java.lang.ArrayIndexOutOfBoundsException
0
godzi44 Messages postés 41 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 17 février 2009 14
5 févr. 2009 à 16:39
ça sa veut dire que tu tente de rentrer une valeur alors que ton tableau est trop petit.
initialise le à 100 et dit moi si tu à encore des erreurs.
De plus combien récupère tu d'enregistrement avec ta base de donnés?
0
wifsimster Messages postés 20 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 mai 2009
5 févr. 2009 à 16:43
public int[] DateDeNaissance() throws SQLException
{
    String sql = "SELECT DATEDIFF(NOW(),Date_naissance)/365.25 FROM usager;";
    Statement stmt = con.createStatement();
    ResultSet r = stmt.executeQuery(sql);
    int[] age = null;
    age = new int[100];
    int indice = 0;
    String dateNaissance = null;
    
    while(r.next())
    {
        indice = indice + 1;
        dateNaissance = r.getString(1);
        float conversion = Float.parseFloat(dateNaissance);
        age[indice] = (int) conversion;
    }
    
    return age;
}


Utilisation :

int[] age = null;
age = new int[9];

System.arraycopy(DateDeNaissance(), 0, age, 0, DateDeNaissance().length);


Je devrais avoir 9 lignes dans mon tableau age normalement.
Et j'ai toujours la même erreur.
0
wifsimster Messages postés 20 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 mai 2009 > wifsimster Messages postés 20 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 7 mai 2009
6 févr. 2009 à 08:29
Solution à mon problème avec des List :

private List<Integer> DateDeNaissance() throws SQLException
{
    String sql = "SELECT DATEDIFF(NOW(),Date_naissance)/365.25 FROM usager;";
    Statement stmt = con.createStatement();
    ResultSet r = stmt.executeQuery(sql);
    List<Integer> age = new ArrayList<Integer>();
    int indice = 0;
    String dateNaissance = null;
    while(r.next())
    {
        indice = indice + 1;
        dateNaissance = r.getString(1);
        float conversion = Float.parseFloat(dateNaissance);
        age.add((int) conversion);
    }
    
    return age;
}
0