Probleme avec des Tableaux en JAVA
Résolu
MegaBob
Messages postés
27
Date d'inscription
Statut
Membre
Dernière intervention
-
MegaBob Messages postés 27 Date d'inscription Statut Membre Dernière intervention -
MegaBob Messages postés 27 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'ai un tableau de 6 colonnes (RClient) que je voudrais copier dans un autre tableau(Tab) mais sans la 1ere colonnes.
lorsque je fais
Tab=RClient;
la copie marche mais j'ai les 6valeurs
J'ai donc fais
int i=0;
int j=1;
String[] Tab = null;
if(i<6){
Tab[i]=RClient[j];
i++;
j++;}
Mais cela ne marche pas et mon programme plante je ne comprend pas ou est l'erreur.
Merci d'avance.
lorsque je fais
Tab=RClient;
la copie marche mais j'ai les 6valeurs
J'ai donc fais
int i=0;
int j=1;
String[] Tab = null;
if(i<6){
Tab[i]=RClient[j];
i++;
j++;}
Mais cela ne marche pas et mon programme plante je ne comprend pas ou est l'erreur.
Merci d'avance.
A voir également:
- Probleme avec des Tableaux en JAVA
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
8 réponses
Bonsoir,
Pour compléter ce qu'à dit Hamza_bba, il faut initialiser ton tableau à autre chose que nul (c'est pas un NullPointerException ton erreur par hasard) ?
Cordialement,
String[] tab = new String[5]; for(int i = 0; i < 5; i++) { tab[i] = rcClient[i+1]; }
Pour compléter ce qu'à dit Hamza_bba, il faut initialiser ton tableau à autre chose que nul (c'est pas un NullPointerException ton erreur par hasard) ?
Cordialement,
salut
vous avez fait qlq erreur :
1- il faut faire une boucle ( il ne sufit pas une condition) en fait remplacer le if par le while
2- tu n'a pas besoin de variable j remplacer Rclient[j] par Rclient[i]
bonne continuation
vous avez fait qlq erreur :
1- il faut faire une boucle ( il ne sufit pas une condition) en fait remplacer le if par le while
2- tu n'a pas besoin de variable j remplacer Rclient[j] par Rclient[i]
bonne continuation
Merci de vos réponses je vais essayer cela.
J'ai besoin de 2Compteurs i et j car les valeurs dans Tab[0] doivent être celle de RClient[1].
J'ai besoin de 2Compteurs i et j car les valeurs dans Tab[0] doivent être celle de RClient[1].
Si tu as un décallage constant (tab[0] = rClient[1], tab[1]=rClient[2]...), une seule variable suffit (voir le code que je t'ai montré).
Sinon un petit if peut aussi t'éviter d'utiliser une variable inutile (si seul le comportement de la première cellule de ton tableau est différent).
Enfin, c'est à toi de voir...
Sinon un petit if peut aussi t'éviter d'utiliser une variable inutile (si seul le comportement de la première cellule de ton tableau est différent).
Enfin, c'est à toi de voir...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
http://www.debutantprogjava.com/
c un très bon site pour commencer à programmer en java
très très apprécié des débutants. D'ailleurs, il est fait pour les débutants.
c un très bon site pour commencer à programmer en java
très très apprécié des débutants. D'ailleurs, il est fait pour les débutants.
C'est bon mon programme marche merci de vos réponses.
Je souhaiterais maintenant utiliser un tableau a 2 dimensions
J'ai une variable
[code]
RecupClient="1:Dupont:Jean:32:Paris:67956:123443#4:Legrand:Yves:67:Lyon:87568:nuul#"
[/code]
Les : servent a séparer les mots et le # a séparer les lignes.
Je souhaiterais récupéré ces valeur dans un tableau a 2 dimension afin de pouvoir les afficher dans une JTable.
J'ai fais
[code]
String[] RClient;
RClient=RecupClient.split("#");
RClient=RClient.split(":");
// puis pour l'affichage
String[] Tab = new String[RClient.length-1];
for(int i = 0; i < RClient.length-1; i++) {
Tab[i] = RClient[i+1];
}
DefaultTableModel tm = (DefaultTableModel)m_Gestion.GetJTableClient().getModel();
tm.addRow(Tab);
[/code]
Cela marche pour une ligne mais je cherche a afficher un nombre variables de lignes, dont les valeur "null" doivent être remplacer par " " et ne pas afficher la 1ere valeur.
Ci quelqu'un a une idée? merci d'avance
Je souhaiterais maintenant utiliser un tableau a 2 dimensions
J'ai une variable
[code]
RecupClient="1:Dupont:Jean:32:Paris:67956:123443#4:Legrand:Yves:67:Lyon:87568:nuul#"
[/code]
Les : servent a séparer les mots et le # a séparer les lignes.
Je souhaiterais récupéré ces valeur dans un tableau a 2 dimension afin de pouvoir les afficher dans une JTable.
J'ai fais
[code]
String[] RClient;
RClient=RecupClient.split("#");
RClient=RClient.split(":");
// puis pour l'affichage
String[] Tab = new String[RClient.length-1];
for(int i = 0; i < RClient.length-1; i++) {
Tab[i] = RClient[i+1];
}
DefaultTableModel tm = (DefaultTableModel)m_Gestion.GetJTableClient().getModel();
tm.addRow(Tab);
[/code]
Cela marche pour une ligne mais je cherche a afficher un nombre variables de lignes, dont les valeur "null" doivent être remplacer par " " et ne pas afficher la 1ere valeur.
Ci quelqu'un a une idée? merci d'avance
Bonsoir,
Moi je ferais un truc du genre plutôt:
Ca ne marche pas ça? En tout cas l'idée c'est de ne pas utiliser rClient pour faire plusieurs choses à la fois : soit tu l'utilises pour découper suivant les #, soit suivant les :, mais pas les deux à la fois, il faut utiliser une autre variable pour pouvoir parcourir à la fois tes lignes et tes colonnes.
Cordialement,
Moi je ferais un truc du genre plutôt:
//rClient est un tableau contenant toutes les lignes String[] rClient = RecupClient.split("#"); DefaultTableModel tm = (DefaultTableModel)m_Gestion.GetJTableClient().getModel(); for (int i = 0; i < rClient.length-1; i++) { //row contient toutes les colonnes d'une ligne String[] row = rClient[i+1].split(":"); tm.addRow(row); }
Ca ne marche pas ça? En tout cas l'idée c'est de ne pas utiliser rClient pour faire plusieurs choses à la fois : soit tu l'utilises pour découper suivant les #, soit suivant les :, mais pas les deux à la fois, il faut utiliser une autre variable pour pouvoir parcourir à la fois tes lignes et tes colonnes.
Cordialement,
La fonction marche mais ne m'affiche que la 2eme ligne et avec la 1ere valeurs, il me faudrait toutes les lignes mais sans la 1ere valeurs a chaque fois.
Mais merci de l'info
Mais merci de l'info
Ah ok,
Essaie ça plutôt alors :
C'est assez pourri vu qu'on est obligé de copier deux fois les mêmes données et que l'un des tableaux ne nous sert à rien (on a une complexité en O(n²) qui n'est pas satisfaisante).
Tu ne peux pas essayer d'avoir ta chaîne d'une meilleure façon plutôt ? De façon à ce qu'elle ne contienne pas les données que tu ne veux pas afficher (le premier élément de chaque ligne) ?
Ca serait beaucoup plus efficace.
Quoiqu'il en soit, c'est pas top de construire des tableaux depuis une String à parser comme ça. Il y a plein d'implémentations d'ensembles en java, efficaces et faciles à utiliser, ce serait plus pratique et plus performant.
Tiens nous au courant,
Essaie ça plutôt alors :
//rClient est un tableau contenant toutes les lignes String[] rClient = RecupClient.split("#"); DefaultTableModel tm = (DefaultTableModel)m_Gestion.GetJTableClient().getModel(); for (int i = 0; i < rClient.length; i++) { //row contient toutes les colonnes d'une ligne String[] rowTemp = rClient[i].split(":"); //on est obligé de faire une copie du tableau pour avoir un String[] qui ne contienne pas la première colonne String[] row = new String[rowTemp.length -1]; for (int j = 0; j < row.length; j++) { row[j] = rowTemp[j+1]; } tm.addRow(row); }
C'est assez pourri vu qu'on est obligé de copier deux fois les mêmes données et que l'un des tableaux ne nous sert à rien (on a une complexité en O(n²) qui n'est pas satisfaisante).
Tu ne peux pas essayer d'avoir ta chaîne d'une meilleure façon plutôt ? De façon à ce qu'elle ne contienne pas les données que tu ne veux pas afficher (le premier élément de chaque ligne) ?
Ca serait beaucoup plus efficace.
Quoiqu'il en soit, c'est pas top de construire des tableaux depuis une String à parser comme ça. Il y a plein d'implémentations d'ensembles en java, efficaces et faciles à utiliser, ce serait plus pratique et plus performant.
Tiens nous au courant,