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 :)
A voir également:
Concaténer deux tableaux de type string case par case en java
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.
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
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).
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.
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
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);
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