java - primera - ¿Cómo puedo incrementar una variable a la letra siguiente o anterior en el alfabeto?
manejo de cadenas en java (5)
Bueno, si te refieres al ''ABC'', entonces se dividen en dos secuencias az y AZ, creo que la forma más sencilla sería utilizar una variable char e incrementar el índice en uno.
char letter=''c'';
letter++; // (letter==''d'')
lo mismo ocurre con el decremento:
char letter=''c'';
letter--; // (letter==''b'')
Lo que pasa es que la representación de las letras az son 97-122 y AZ son 65-90, por lo que si el caso de la carta es importante, debe prestarle atención.
Tengo una letra mayúscula definida en una cadena variable, y quiero mostrar las letras siguientes y anteriores en el alfabeto. Por ejemplo, si la variable fuera igual a ''C''
, me gustaría mostrar ''B''
y ''D''
.
De una sola mano:
String value = "C";
int charValue = value.charAt(0);
String next = String.valueOf( (char) (charValue + 1));
System.out.println(next);
Si está limitado al alfabeto latino, puede usar el hecho de que los caracteres en la tabla ASCII están ordenados alfabéticamente, por lo que:
System.out.println((char) (''C'' + 1));
System.out.println((char) (''C'' - 1));
Salidas D
y B
Lo que hace es agregar un char
y un int
, por lo que efectivamente agrega el int
al código ascii del char
. Cuando vuelves a char
, el código ASCII se convierte en un personaje.
Todas las respuestas son correctas, pero ninguna parece dar una explicación completa, así que lo intentaré. Al igual que cualquier otro tipo, un char
se almacena como un número ( 16 bits en Java ). A diferencia de otros tipos no numéricos, la asignación de los valores de los números almacenados a los valores de los caracteres que representan es bien conocida. Este mapeo se llama la Tabla ASCII . El compilador de Java trata los caracteres como un número de 16 bits y, por lo tanto, puede hacer lo siguiente:
System.out.print((int)''A''); // prints 65
System.out.print((char)65); // prints A
Por esta razón, el ++
, --
y otras operaciones matemáticas se aplican a los caracteres y proporcionan una manera de aumentar / disminuir sus valores.
Tenga en cuenta que la conversión es cíclica cuando supera los 16 bits:
System.out.print((char)65601); // also prints A
System.out.print((char)-65471); // also prints A
PS Esto también se aplica a Kotlin:
println(''A''.toInt()) // prints 65
println(65.toChar()) // prints A
println(65601.toChar()) // prints A
println((-65471).toChar()) // prints A
así como esto:
System.out.printf("%c/n",letter);
letter++;