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   -
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.
A voir également:

8 réponses

Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   329
 
Bonsoir,
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,
2
hamza_bba
 
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
0
MegaBob Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   2
 
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].
0
Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   329
 
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...
0
MegaBob Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   2
 
C'est tout marche merci de vos réponses.
0
hamza_bba Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   1
 
de rien merçi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Raph707 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
MegaBob Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   2
 
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
0
Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   329
 
Bonsoir,
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,
0
MegaBob Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   2
 
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
0
Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   329
 
Ah ok,
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,
0
MegaBob Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   2
 
C'est bon mon programme marche impecable un grand merci a toi.
0