Chaine de caractère [ Java ]
Résolu
Le_mazo
Messages postés
215
Date d'inscription
Statut
Membre
Dernière intervention
-
Le_mazo Messages postés 215 Date d'inscription Statut Membre Dernière intervention -
Le_mazo Messages postés 215 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Chaine de caractère [ Java ]
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - 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