Récupérer un tableau d'une fonction

Résolu
wifsimster Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
wifsimster Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

4 réponses

godzi44 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   14
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   14
 
dans ta fonction après le:
int[] age = null;
0
wifsimster Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Oui donc maintenant je ne vois pas qu'elle taille mettre à mon tableau ...
0
godzi44 Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   14
 
ç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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   14
 
ç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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   > wifsimster Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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