JAVA : Découper un String

Résolu/Fermé
Jeemys Messages postés 3 Date d'inscription dimanche 26 février 2012 Statut Membre Dernière intervention 27 février 2012 - Modifié par Jeemys le 27/02/2012 à 03:23
Jeemys Messages postés 3 Date d'inscription dimanche 26 février 2012 Statut Membre Dernière intervention 27 février 2012 - 27 févr. 2012 à 17:10
Bonjour,

Je fais un programme en JAVA et après de multiples tentatives, je suis encore bloqué à une étape depuis des heures.

Je veux découper une chaîne de caractères et l'insérer dans un tableau à 2 dimensions.
J'aimerais limiter mon nombre de colonnes à 6.

Un exemple :
Je prends donc la chaine de caractère "bonjour" et je l'insère dans mon tableau comme ceci.

[b][o][n][j][o][u]
[r] [] [] [] [] []


J'ai écris cela mais je n'obtiens pas le résultat escompté

public char[][] Permutation(String clair, char clef[])
	{
		int tailleCle = clef.length;   //tailleCle = 6
		int taille = (clair.length() / tailleCle) +1;  // taille = 5 ((27/6 = 4) + 1)
		lines = new char [taille][tailleCle];
				
		for (int i=0; i<lines.length; i++)
		{
		
			for (int j=0; j<clair.length(); j++)
			{
				char c = clair.charAt(j);
				lines[i][j] = c;
			}
		}
		
               return lines  
           }  


J'obtiens
[b][o][n][j][o][u]
[b][o][n][j][o][u]
[b][o][n][j][o][u]
....

Si vous pouviez m'aider svp.
A voir également:

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 27/02/2012 à 03:41
Il ne faut pas réfléchir par rapport à la sortie, mais par rapport à l'entrée.
Ici tu as deux boucles for pour remplir les cases de ton tableau, alors qu'il suffirait d'une seule boucle qui parcourrait le mot d'entrée...

public static char[][] permutation(String clair, char clef[])
{
    int tailleClair = clair.length();
    int tailleCle = clef.length;
    
    int taille = tailleClair/tailleCle + ((tailleClair%tailleCle==0) ? 0 : 1);
    
    char[][] lines = new char[taille][tailleCle];
    
    for (int i=0; i<tailleClair; i++)
        lines[i/tailleCle][i%tailleCle] = clair.charAt(i);
    
    return lines;
}
La confiance n'exclut pas le contrôle
1
Jeemys Messages postés 3 Date d'inscription dimanche 26 février 2012 Statut Membre Dernière intervention 27 février 2012
27 févr. 2012 à 13:48
Merci de la réponse, j'essaie ça tout de suite.
0
Jeemys Messages postés 3 Date d'inscription dimanche 26 février 2012 Statut Membre Dernière intervention 27 février 2012 > Jeemys Messages postés 3 Date d'inscription dimanche 26 février 2012 Statut Membre Dernière intervention 27 février 2012
27 févr. 2012 à 17:10
Fonctionne nickel, merci beaucoup. J'ai passé toute la soirée d'hier à trouver une solution et finalement il fallait prendre le problème sous un autre angle.
0