Concaténer deux tableaux de type string case par case en java [Résolu/Fermé]

Signaler
Messages postés
13
Date d'inscription
dimanche 18 novembre 2012
Statut
Membre
Dernière intervention
2 décembre 2012
-
Messages postés
13
Date d'inscription
dimanche 18 novembre 2012
Statut
Membre
Dernière intervention
2 décembre 2012
-
Bonsoir,


comment je peut concaténer deux tableaux de type string case par case en java , et finalement les affichés dan un tableau (initialement vide)
par exemple:

string t []={'1','2','3','4'};//la plaquette
string t1 []={'+','-','*'};//la plaquette
string t2 []= new string[7];

et merci d'avance :)

3 réponses

Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
793
En bouclant sur t et t1 pour récupérer chaque valeur à concaténer. (au passage '1' n'est pas une String mais un char, c'est "1" qui serait une String,)
Par contre je ne comprends pas ton sujet parce que si tu les concatènes String à String, tel que je l'interprète ça ferait 3×4=12 combinaisons pas 7 (t2 = {"1+", "1-", "1*", "2+", "2-", "2*", "3+", "3-", "3*", "4+", "4-", "4*").
Si tu veux assembler tes tableaux pour obtenir t2 = {"1", "2", "3", "4", "+", "-", "*"} (ce qui fait bien 7) tu peux utiliser la méthode statique System.arraycopy

J'espère avoir aidé, sinon précise ou reformule ton problème.
Messages postés
13
Date d'inscription
dimanche 18 novembre 2012
Statut
Membre
Dernière intervention
2 décembre 2012

merci bien mais le problème c'est qu'on veut obtenir une opération mathématique
c'est pour ça je veux concaténer case par case:
la 1er case de 1er tab
la 2eme case de tab
jusqu'à la fin de 1er tab puisqu'il contient des case supérieure au 2eme
SVP est il y a une méthode qui peut m'aider
Messages postés
13
Date d'inscription
dimanche 18 novembre 2012
Statut
Membre
Dernière intervention
2 décembre 2012

normalement on obtient un tableau de 7 case :

1+2-3*4
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
793
Ah je n'aurais jamais pensé à un exercice qui fasse faire ça.
Avec un indice pour parcourir les deux tableaux, tu prends alternativement la String de l'un et la String de l'autre (avec le cas particulier de l'index 3 qui finit sur le chiffre).
Messages postés
13
Date d'inscription
dimanche 18 novembre 2012
Statut
Membre
Dernière intervention
2 décembre 2012

c'est à dire 3 compteurs chacun sur un tab comme ça :

string t []={"1","2","3","4"};
string t1 []={"+","-","*"};
string t2 []= new string[7];


for(int i=0; i<t[4]; i++)

{
for (int j=0;j<t[3];j++)
{
for (int k=0;k<7;k++)
{
t2[k]=t[i]+t1[j];
System.out.print( t2[k]+"|");
}
}
}

mais ça ne marche pas
désolé mais je suis débutante en java :(
et merci bien pour votre patience :)
Messages postés
15974
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
6 août 2020
2 648
Hou que c'est compliqué !

Déjà les String c'est avec des majuscules !
Ensuite, tous les t[i] c'est aussi des String, alors tu peux pas faire des comparaisons avec des int, comme dans ton i<t[4], d'autant t[4] plantera puisque la taille de t est de 4, donc on la case 4 n'existe pas.

for (int i=0; i<7; i++)
    t2[i] = (i%2==0) ? t[i/2] : t1[i/2];
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
793
t[4] correspond à l'élément à l'index 4 de t (qui n'existe pas, ce qui provoque un IndexOutOfBoundsException parce que tu demandes une valeur hors bornes).
Ce qu'il te faut c'est la longueur de t, que tu obtiens par l'attribut length du tableau. Soit
t.length


Si tu réfléchis sans chercher à placer des index dans un premier temps :
1) tu prends t[0] pour récupérer "1" pour le mettre dans t2[0]
2) tu prends ensuite t1[0] pour récupérer "+" pour le mettre dans t2[1]
3) tu prends ensuite t[1] pour récupérer "2" pour le mettre dans t2[2]
4) tu prends ensuite t1[1] pour récupérer "-" pour le mettre dans t2[3]
etc.
Après cette réflexion tu remarques que :
- ce qui augmente à chaque fois c'est l'index du tableau de destination. Et que dans le même temps, l'index pour le tableau de provenance est toujours la moitié de cet index qui augmente régulièrement.
En formalisant avec une variable, appelons-la "truc" :
1) tu prends t[truc/2] pour le mettre dans t2[truc]
2) tu prends t1[truc/2] pour le mettre dans t2[truc+1]
=> en augmentant truc de 2 en 2
Ou tu peux le voir comme
- ce qui augmente une fois sur deux, c'est un index sur les tableaux d'origine. Et que dans le même temps, l'index de destination de chiffres est égal au double, et l'index de destination des symboles est égal au double plus un.
En formalisant avec un variable, appelons-la "muche" :
1) tu prends t[muche] pour le mettre dans t2[2*muche]
2) tu prends t1[muche] pour le mettre dans t2[2*muche+1]
en augmentant muche de 1 en 1
Messages postés
13
Date d'inscription
dimanche 18 novembre 2012
Statut
Membre
Dernière intervention
2 décembre 2012

et oui ça marche merciiiiiiiii :)
Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
83
Bonsoir imen123,
Pas boucler sur les trois tableau.
Le principe est de boucler sur les deux tableaux avec une seule boucle et de remplir le troisième au fur et à mesure de ton avancement. Quand je dis une seule boucle, il faut être certain que ton deuxième tableau aie la même taille que ton premier tableau mais -1 !. Si c'est toujours le cas, alors tu peux faire:
AJUSTE_TAILLE(t2(TAILLE(t) + TAILLE(t1)));
it = 0;
it1 = 0;
POUR (i=0 ; i<TAILLE(t2) ; i++)
t2(i)=t(it);
it++;
t2(i)=t(it1);
it1++;
FIN POUR i
t2(i)=t(it);