Probleme avec des Tableaux en JAVA

Résolu/Fermé
MegaBob Messages postés 27 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 19 octobre 2008 - 12 juin 2008 à 23:27
MegaBob Messages postés 27 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 19 octobre 2008 - 14 juin 2008 à 11:41
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 vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
13 juin 2008 à 00:03
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
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 mercredi 11 juin 2008 Statut Membre Dernière intervention 19 octobre 2008 2
13 juin 2008 à 00:47
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 vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
13 juin 2008 à 00:50
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 mercredi 11 juin 2008 Statut Membre Dernière intervention 19 octobre 2008 2
13 juin 2008 à 11:53
C'est tout marche merci de vos réponses.
0
hamza_bba Messages postés 78 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 6 août 2009 1
13 juin 2008 à 11:55
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 vendredi 7 février 2003 Statut Membre Dernière intervention 26 août 2008
13 juin 2008 à 14:39
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 mercredi 11 juin 2008 Statut Membre Dernière intervention 19 octobre 2008 2
13 juin 2008 à 19:10
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 vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
13 juin 2008 à 20:35
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 mercredi 11 juin 2008 Statut Membre Dernière intervention 19 octobre 2008 2
13 juin 2008 à 23:22
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 vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
14 juin 2008 à 00:06
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 mercredi 11 juin 2008 Statut Membre Dernière intervention 19 octobre 2008 2
14 juin 2008 à 11:41
C'est bon mon programme marche impecable un grand merci a toi.
0