Concaténer deux tableaux de type string case par case en java

Résolu/Fermé
imen123 Messages postés 13 Date d'inscription dimanche 18 novembre 2012 Statut Membre Dernière intervention 2 décembre 2012 - 30 nov. 2012 à 20:59
imen123 Messages postés 13 Date d'inscription dimanche 18 novembre 2012 Statut Membre Dernière intervention 2 décembre 2012 - 30 nov. 2012 à 23:25
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 :)

A voir également:

3 réponses

bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 859
Modifié par bizu53 le 30/11/2012 à 21:42
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.
0
imen123 Messages postés 13 Date d'inscription dimanche 18 novembre 2012 Statut Membre Dernière intervention 2 décembre 2012
Modifié par imen123 le 30/11/2012 à 22:33
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
0
imen123 Messages postés 13 Date d'inscription dimanche 18 novembre 2012 Statut Membre Dernière intervention 2 décembre 2012
30 nov. 2012 à 21:56
normalement on obtient un tableau de 7 case :

1+2-3*4
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 859
30 nov. 2012 à 22:32
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).
0
imen123 Messages postés 13 Date d'inscription dimanche 18 novembre 2012 Statut Membre Dernière intervention 2 décembre 2012
Modifié par imen123 le 30/11/2012 à 22:52
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 :)
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
30 nov. 2012 à 23:00
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];
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 859
30 nov. 2012 à 23:12
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
0
imen123 Messages postés 13 Date d'inscription dimanche 18 novembre 2012 Statut Membre Dernière intervention 2 décembre 2012
30 nov. 2012 à 23:25
et oui ça marche merciiiiiiiii :)
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
30 nov. 2012 à 23:10
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);
0