salut !
il faudra un peu plus de détails, comme par exemple qu'y a t'il dans ta liste ? que veux tu comme résultats ? car sans ca la question n'a pas vraiment de sens.
naga
hullu
Messages postés6StatutMembre
Salut,
Merci de ta réponse
ma list contient des objets que je voudrais placer dans un tableau a 2 dimensions. ceci dans le but de pouvoir les afficher dans une JTable.
Utilisateur anonyme
le problème reste le même ... mais supposons que ton arrayList nommé 'a' contient, pour chaque ligne, un type string[] (de 2 éléments)
string tab[][] = string int[a.size()][2];
for (int i = 0; i < a.size(); i++) {
tab[i][0] = a.get(i)[0];
tab[i][0] = a.get(i)[1];
}
(j'ai un doute entre le size et le count, ca fait pas mal de temps que j'ai pas touché au java =p)
Je sais pas si c'est exactement ce que tu veux mais le principe devrait être le m^me
hullu
Messages postés6StatutMembre
Encore merci.
Voici le code auquel j'avais pensé mais celui ci lève une NullPointerException.
private static Object data[][];
private static ArrayList<LigneDeCommande> listeDeToutesLesLignes = new ArrayList<>();
public static void convertArrayToTab() {
int i = 0;
System.out.println(listeDeToutesLesLignes.size());
while(i < listeDeToutesLesLignes.size()){
data[i][0] = listeDeToutesLesLignes.get(i).getDesignation();
data[i][1] = listeDeToutesLesLignes.get(i).getReference();
data[i][2] = listeDeToutesLesLignes.get(i).getQuantité();
data[i][3] = listeDeToutesLesLignes.get(i).getPrixUnitaire();
data[i][4] = listeDeToutesLesLignes.get(i).getTotalLigne();
data[i][5] = listeDeToutesLesLignes.get(i).isCommande();
data[i][6] = listeDeToutesLesLignes.get(i).isRecu();
i = i++;
}
}
Utilisateur anonyme
que quelqu'un me fouette si je me trompe, mais il me semble que déclarer un 'static' ne te permet pas de l'éditer ensuite ... essaye sans (si ca pose bien problème, je pense que ca sera pareil pour ton arraylist). de même, tu n'as pas de new sur ton data .
ensuite tu fais i = i++
fais plutot i++ tout simplement pour l'icrémenter.
essaye donc :
private Object data[][];
private ArrayList<LigneDeCommande> listeDeToutesLesLignes = new ArrayList<>();
public static void convertArrayToTab()
{
data = new string[listeDeToutesLesLignes.size()][7];
int i = 0;
System.out.println(listeDeToutesLesLignes.size());
while(i < listeDeToutesLesLignes.size())
{
data[i][0] = listeDeToutesLesLignes.get(i).getDesignation();
data[i][1] = listeDeToutesLesLignes.get(i).getReference();
data[i][2] = listeDeToutesLesLignes.get(i).getQuantité();
data[i][3] = listeDeToutesLesLignes.get(i).getPrixUnitaire();
data[i][4] = listeDeToutesLesLignes.get(i).getTotalLigne();
data[i][5] = listeDeToutesLesLignes.get(i).isCommande();
data[i][6] = listeDeToutesLesLignes.get(i).isRecu();
i++;
}
}
KX
Messages postés19031StatutModérateur3 020
"que quelqu'un me fouette si je me trompe, mais il me semble que déclarer un 'static' ne te permet pas de l'éditer ensuite" Et un coup de fouet pour nagashima ^^
"static" n'empêche pas du tout l'édition, peut-être confonds-tu avec "final", même si l'édition reste malgré tout possible (c'est la réutilisation d'une référence pour plusieurs objets qui est interdit)
"static" permet de différencier les méthodes qui s'appliquent à la classe et sont donc partagées par tous les objets, des méthodes non "static" qui elles s'utilisent sur un objet en utilisant ses données.
Par contre il faut être cohérent, soit tout est static et il n'y a aucun objet (et donc pas de données, sauf des données partagées), soit rien n'est static parce que ça s'applique à un seul et même objet (et donc aux même données). Si on mélange les deux il faut préciser dans les méthodes static de quel objet (quelles données) on parle...
Ici, le NullPointerException vient tout simplement du fait que data n'a pas de valeur (il vaut donc null par défaut), il faut appeler un constructeur, permettant entre autre de lui donner une taille.
Donc "data = new string[listeDeToutesLesLignes.size()][7];" pourrait faire l'affaire, sauf qu'ici il ne s'agit pas de "string" mais d'Object puisqu'il y a un peu de tout dans les lignes.
Par contre, l'utilisation de ton tableau data déclaré en membre (static qui plus est) me parait maladroit, il vaudrait mieux je pense faire une méthode static qui manipule une liste en entrée, et renvoie ton tableau en retour, quitte à avoir un membre qui s'appelle effectivement data dans tes objets et que tu utilises pour récupérer le résultat. Mais si tu utilises toujours le même tableau static, à chaque fois que tu feras appel à la méthode tu vas reprendre le même tableau et modifier sa valeur, ce qui va poser problème.
Voici comment moi je ferais :
public static Object[] lineToArray(LigneDeCommande ligne)
{
return new Object[] { ligne.getReference(), ligne.getQuantité(), ligne.getPrixUnitaire(), ligne.getTotalLigne(), ligne.isCommande(), ligne.isRecu() };
}
public static Object[][] listToArray(ArrayList<LigneDeCommande> liste)
{
Object[][] array = new Object[liste.size()][];
int i=0;
for (LigneDeCommande ligne : liste)
array[i++] = ligneToArray(ligne);
return data;
}
// ...
Object[][] data = listToArray(listeDeToutesLesLignes);
Merci de ta réponse
ma list contient des objets que je voudrais placer dans un tableau a 2 dimensions. ceci dans le but de pouvoir les afficher dans une JTable.
string tab[][] = string int[a.size()][2]; for (int i = 0; i < a.size(); i++) { tab[i][0] = a.get(i)[0]; tab[i][0] = a.get(i)[1]; }(j'ai un doute entre le size et le count, ca fait pas mal de temps que j'ai pas touché au java =p)
Je sais pas si c'est exactement ce que tu veux mais le principe devrait être le m^me
Voici le code auquel j'avais pensé mais celui ci lève une NullPointerException.
private static Object data[][];
private static ArrayList<LigneDeCommande> listeDeToutesLesLignes = new ArrayList<>();
public static void convertArrayToTab() {
int i = 0;
System.out.println(listeDeToutesLesLignes.size());
while(i < listeDeToutesLesLignes.size()){
data[i][0] = listeDeToutesLesLignes.get(i).getDesignation();
data[i][1] = listeDeToutesLesLignes.get(i).getReference();
data[i][2] = listeDeToutesLesLignes.get(i).getQuantité();
data[i][3] = listeDeToutesLesLignes.get(i).getPrixUnitaire();
data[i][4] = listeDeToutesLesLignes.get(i).getTotalLigne();
data[i][5] = listeDeToutesLesLignes.get(i).isCommande();
data[i][6] = listeDeToutesLesLignes.get(i).isRecu();
i = i++;
}
}
ensuite tu fais i = i++
fais plutot i++ tout simplement pour l'icrémenter.
essaye donc :
private Object data[][]; private ArrayList<LigneDeCommande> listeDeToutesLesLignes = new ArrayList<>(); public static void convertArrayToTab() { data = new string[listeDeToutesLesLignes.size()][7]; int i = 0; System.out.println(listeDeToutesLesLignes.size()); while(i < listeDeToutesLesLignes.size()) { data[i][0] = listeDeToutesLesLignes.get(i).getDesignation(); data[i][1] = listeDeToutesLesLignes.get(i).getReference(); data[i][2] = listeDeToutesLesLignes.get(i).getQuantité(); data[i][3] = listeDeToutesLesLignes.get(i).getPrixUnitaire(); data[i][4] = listeDeToutesLesLignes.get(i).getTotalLigne(); data[i][5] = listeDeToutesLesLignes.get(i).isCommande(); data[i][6] = listeDeToutesLesLignes.get(i).isRecu(); i++; } }Et un coup de fouet pour nagashima ^^
"static" n'empêche pas du tout l'édition, peut-être confonds-tu avec "final", même si l'édition reste malgré tout possible (c'est la réutilisation d'une référence pour plusieurs objets qui est interdit)
"static" permet de différencier les méthodes qui s'appliquent à la classe et sont donc partagées par tous les objets, des méthodes non "static" qui elles s'utilisent sur un objet en utilisant ses données.
Par contre il faut être cohérent, soit tout est static et il n'y a aucun objet (et donc pas de données, sauf des données partagées), soit rien n'est static parce que ça s'applique à un seul et même objet (et donc aux même données). Si on mélange les deux il faut préciser dans les méthodes static de quel objet (quelles données) on parle...
Ici, le NullPointerException vient tout simplement du fait que data n'a pas de valeur (il vaut donc null par défaut), il faut appeler un constructeur, permettant entre autre de lui donner une taille.
Donc "data = new string[listeDeToutesLesLignes.size()][7];" pourrait faire l'affaire, sauf qu'ici il ne s'agit pas de "string" mais d'Object puisqu'il y a un peu de tout dans les lignes.
Par contre, l'utilisation de ton tableau data déclaré en membre (static qui plus est) me parait maladroit, il vaudrait mieux je pense faire une méthode static qui manipule une liste en entrée, et renvoie ton tableau en retour, quitte à avoir un membre qui s'appelle effectivement data dans tes objets et que tu utilises pour récupérer le résultat. Mais si tu utilises toujours le même tableau static, à chaque fois que tu feras appel à la méthode tu vas reprendre le même tableau et modifier sa valeur, ce qui va poser problème.
Voici comment moi je ferais :
public static Object[] lineToArray(LigneDeCommande ligne) { return new Object[] { ligne.getReference(), ligne.getQuantité(), ligne.getPrixUnitaire(), ligne.getTotalLigne(), ligne.isCommande(), ligne.isRecu() }; } public static Object[][] listToArray(ArrayList<LigneDeCommande> liste) { Object[][] array = new Object[liste.size()][]; int i=0; for (LigneDeCommande ligne : liste) array[i++] = ligneToArray(ligne); return data; } // ... Object[][] data = listToArray(listeDeToutesLesLignes);