Chaine de caractère [ Java ]
Résolu
Le_mazo
Messages postés
233
Statut
Membre
-
Le_mazo Messages postés 233 Statut Membre -
Le_mazo Messages postés 233 Statut Membre -
Bonjour,
Je voudrai separer les caractere d'une chaine, je m'explique:
j'ai une chaine du type "ABCD" et je voudrai savoir:
comment fait on pour les separer et obtenir ainsi 4 caracteres ?
merci
_______________________________________________________________________
A tous c'est Le_mazo
Je voudrai separer les caractere d'une chaine, je m'explique:
j'ai une chaine du type "ABCD" et je voudrai savoir:
comment fait on pour les separer et obtenir ainsi 4 caracteres ?
merci
_______________________________________________________________________
A tous c'est Le_mazo
A voir également:
- Chaine de caractère [ Java ]
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
6 réponses
L'imbrication des "if" est très lourde !
En plus ton code n'est valable que pour une chaîne de trois caractères !
Il vaut mieux faire quelque chose de plus général, c'est pas plus compliqué !
Néanmoins dans ton code, je te conseilles quand même ces deux raccourcis :
Voici quelque chose de plus générique pour ce que tu veux faire :
La première méthode est plus efficace, mais j'en met une deuxième qui me semble plus intéressante d'un point de vue algorithmique...
En plus ton code n'est valable que pour une chaîne de trois caractères !
Il vaut mieux faire quelque chose de plus général, c'est pas plus compliqué !
Néanmoins dans ton code, je te conseilles quand même ces deux raccourcis :
char // déclaration et initialisation en une étape
car1 = l.charAt(0),
car2 = l.charAt(1),
car3 = l.charAt(2);
l =""+car1+car2+car3; // modification de toute la chaîne en une fois
Voici quelque chose de plus générique pour ce que tu veux faire :
La première méthode est plus efficace, mais j'en met une deuxième qui me semble plus intéressante d'un point de vue algorithmique...
public static String incr1(String s)
{
byte[] tab = s.getBytes();
for (int i=s.length()-1; i>=0; i--)
{
if (tab[i]=='Z')
tab[i]='A';
else
{
tab[i]++;
break;
}
}
return new String(tab);
}
//------------------------------------------------
private static String incr2(String s, int n)
{
if (n==0)
return "AA";
char c = s.charAt(n);
if (c=='Z')
return incr2(s,n-1)+'A';
else
return s.substring(0,n)+(char) (c+1);
}
public static String incr2(String s)
{
return incr2(s,s.length()-1);
}
//------------------------------------------------
public static void main(String args[])
{
System.out.println(incr1("ABC")); // ABD
System.out.println(incr1("ABZ")); // ACA
System.out.println(incr1("ZZZ")); // AAA
System.out.println();
System.out.println(incr2("ABC")); // ABD
System.out.println(incr2("ABZ")); // ACA
System.out.println(incr2("ZZZ")); // AAAA
}
Tu peux considérer le String comme un tableau de caractères (ou un tableau d'octets)
Voici 3 méthodes différentes d'accès mais il y en a d'autres, regardes la documentation
Voici 3 méthodes différentes d'accès mais il y en a d'autres, regardes la documentation
public static void main(String args[])
{
String str = "ABCD";
// Méthode 1 -----------------------------------
for (int i=0; i<str.length(); i++)
System.out.println("#1 - "+str.charAt(i));
// Méthode 2 -----------------------------------
for (char c : str.toCharArray())
System.out.println("#2 - "+c);
// Méthode 3 -----------------------------------
for (byte b : str.getBytes())
System.out.println("#3 - "+(char) b);
}
Salut,
Cordialement,
Dan
Ps,
Désolé KX, j'ai validé ma réponse sans voir que tu venais de répondre.
String maChaine = "ABCD";
for(int i = 0; i <maChaine.length(); i++)
System.out.println("char char" + (i +1) + " = '"
+ maChaine.charAt(i) + "';");
Cordialement,
Dan
Ps,
Désolé KX, j'ai validé ma réponse sans voir que tu venais de répondre.
Merci de vos reponse j'ai trouver cette solution en considerant un String en tableau :
n'hesiter pas a faire une remarque si quelque chode vous choc ou si on peut faire une belle optimisation !! ;)
________________________________________________________________
A tous c'est Le_mazo
String l = "ABC";
char car1;
char car2;
char car3;
car1 = l.charAt( 0 );
car2 = l.charAt( 1 );
car3 = l.charAt( 2 );
if( car3 == 'Z') {
if( car2 == 'Z') {
car1++;
car2 = car3 = 'A';
}
else {
car2++;
car3='A';
}
}
else {
car3++;
}
l ="";
l += car1;
l += car2;
l += car3;
System.out.println ( l );
n'hesiter pas a faire une remarque si quelque chode vous choc ou si on peut faire une belle optimisation !! ;)
________________________________________________________________
A tous c'est Le_mazo
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Ce test est incomplet:
Commencer par tenir compte du cas où car2 et/ou car3 = z avant de penser à optimiser.
Dan
Ce test est incomplet:
Commencer par tenir compte du cas où car2 et/ou car3 = z avant de penser à optimiser.
Dan
mais en fait je ne me soucis pas du cas ZZZ etant donnée que ZZZ sera le maximum optenu ( d'ou mon code en dur valable seulement pour 3 caracetere puisqu'il n'y en aura que 3)
mais je pense effectivement changer ca par la methode incr1 de KX
________________________________________________________________
A tous c'est Le_mazo
mais je pense effectivement changer ca par la methode incr1 de KX
________________________________________________________________
A tous c'est Le_mazo