J'ai une lettre majuscule définie dans une chaîne de variable et je veux sortir les lettres suivantes et précédentes de l'alphabet. Par exemple, si la variable était égale à 'C'
, je voudrais générer 'B'
et 'D'
.
Une manière:
String value = "C";
int charValue = value.charAt(0);
String next = String.valueOf( (char) (charValue + 1));
System.out.println(next);
Eh bien, si vous voulez parler de «ABC», ils se divisent en deux séquences a-z et A-Z. La façon la plus simple de procéder serait d’utiliser une variable char et d’incrémenter l’indice de un.
char letter='c';
letter++; // (letter=='d')
il en va de même pour décrémenter:
char letter='c';
letter--; // (letter=='b')
le fait est que les lettres a-z sont représentées entre 97-122 et A-Z entre 65 et 90. Si le cas de la lettre est important, vous devez y porter une attention particulière.
Si vous êtes limité à l'alphabet latin, vous pouvez utiliser le fait que les caractères de la table ASCII sont classés par ordre alphabétique. Ainsi:
System.out.println((char) ('C' + 1));
System.out.println((char) ('C' - 1));
sorties D
et B
.
Ce que vous faites est d’ajouter une char
et une int
, ajoutant ainsi effectivement la int
au code ascii de la char
. Lorsque vous convertissez à char
, le code ASCII est converti en un caractère.
juste comme ça :
System.out.printf("%c\n",letter);
letter++;
Toutes les réponses sont correctes mais aucune ne semble donner une explication complète, alors je vais essayer. Comme tout autre type, une char
est stockée sous forme de nombre ( 16 bits en Java ). Contrairement aux autres types non numériques, le mappage des valeurs des nombres stockés sur les valeurs des char
s qu'ils représentent est bien connu. Ce mappage est appelé ASCII Table . Le compilateur Java considère char
s comme un nombre 16 bits et vous pouvez donc effectuer les opérations suivantes:
System.out.print((int)'A'); // prints 65
System.out.print((char)65); // prints A
Pour cette raison, les opérations ++
, --
et d’autres opérations mathématiques s’appliquent à char
s et permettent d’incrémenter/de réduire leurs valeurs.
Notez que la diffusion est cyclique lorsque vous dépassez 16 bits:
System.out.print((char)65601); // also prints A
System.out.print((char)-65471); // also prints A
P.S. Ceci s'applique également à Kotlin:
println('A'.toInt()) // prints 65
println(65.toChar()) // prints A
println(65601.toChar()) // prints A
println((-65471).toChar()) // prints A