RISOLTO Java - conversione da char a String

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.

petrusic

Utente Attivo
Messaggi
229
Reazioni
20
Punteggio
46
Non so che prefisso potrei selezionare, perchè vi voglio comunicare come ho risolto la conversione di un carattere dal type char al formato String.

Nel mio costruendo programma ho incontrato la necessità di incrementare automaticamente un codice alfabetico di carattere (String) di un campo di tabella di DB.
Dopo innumerevoli ricerche, nelle quali non ho trovato la risposta che cercavo, ho capito che potevo fare così:
Codice:
       char[] ch = {'a'};     
        int n = ch[0];
        System.out.println("ch= '" + ch[0] + "'");
        System.out.println("n= '" + n + "'");
        ++ch[0];
        n = ch[0];
        String str = new String(ch);
        System.out.println("ch= '" + ch[0] + "'");
        System.out.println("n= '" + n + "'");
        System.out.println("str= '" + str + "'");
ottenendo :
ch= 'a'
n= '97'
ch= 'b'
n= '98'
str= 'b'
perciò
:dancinghae:
bevete con me! :brindiamo:
 
Ultima modifica:
In Java, in modo simile a C, C++ ed altri linguaggi, esiste una corrispondenza numerica tra interi e caratteri. Più in dettaglio, la conversione tra i tipi char ed int avviene senza perdita di precisione e senza che sia necessaria nessuna conversione esplicita; in altri termini se si fa
char u = 'a';
int n = u; // n=97

cioè ad n viene assegnato il numero d'ordine Unicode del carattere 'a' (97);
è lecito anche il viceversa purché l'assegnamento venga fatto su una costante intera
char u = 99; // u ='c'
quello che non si può fare è assegnare una espressione, a causa del pericolo di perdita di informazioni. Per esempio per trovare il carattere successivo in ordine lessicografico ad un carattere dato come "origine" bisogna forzare una conversione di tipo:
char u = 'a';
char v = (char)(u+1); // v = 'b', il successore di 'a'

infine, la classe Character standard del linguaggio mette a disposizione un comodo metodo statico per convertire un carattere in Stringa
String s = Character.toString(v); // s = "b"
Tutto questo per dire cosa?
Se hai un carrattere di tipo char di cui vuoi "calcolare" il successore e poi trasformarlo in stringa, ti basta una sola istruzione, certamente più leggibile (ed efficiente) rispetto al codice di cui alla precedente discussione:
String successore = Character.toString( (char)(u+1) );
@petrusic
per verificarlo, compila e prova il seguente codice
Java:
public class Prova
{
    public static void main(String[] args){
        char u = 'a';
        // v = successore di u
        char v = (char)(u+1);
        String s = Character.toString(v);
        System.out.println("String s = " + s);
        //oppure direttamente tutto in una sola istruzione
        String successore = Character.toString( (char)(u+1) );
        System.out.println("String successore = " + successore);
    }
}
l'output di questo programma è
Codice:
String s = b
String successore = b
 
Ultima modifica da un moderatore:
Al momento sono con lo smartphone e non posso rispondere bene, ma quello che scrivi tu
“codice alfabetico di carattere (String)”
e’ sbagliato, il tipo String è una stringa di caratteri alfanumerici, non UN codice alfabetico (non solo in Java). Incrementare un codice alfabetico è comunque rischioso perché puoi ottenerne uno che non sia stampabile, con le dovute conseguenze, va quindi fatto con cautela.
 
...
Se hai un carrattere di tipo char di cui vuoi "calcolare" il successore e poi trasformarlo in stringa, ti basta una sola istruzione, certamente più leggibile (ed efficiente) rispetto al codice di cui alla precedente discussione:
String successore = Character.toString( (char)(u+1) );

per verificarlo, compila e prova il seguente codice
Java:
{
    public static void main(String[] args){
        char u = 'a';
        // v = successore di u
        char v = (char)(u+1);
        String s = Character.toString(v);
        System.out.println("String s = " + s);
        //oppure direttamente tutto in una sola istruzione
        String successore = Character.toString( (char)(u+1) );
        System.out.println("String successore = " + successore);
    }
}

Provato ed il risultato è effettivamente:
String s = b
String successore = b

Grazie per l'approfondimento che ho letto con attenzione.
--- i due messaggi sono stati uniti ---
Al momento sono con lo smartphone e non posso rispondere bene, ma quello che scrivi tu
“codice alfabetico di carattere (String)”
e’ sbagliato, il tipo String è una stringa di caratteri alfanumerici, non UN codice alfabetico (non solo in Java). Incrementare un codice alfabetico è comunque rischioso perché puoi ottenerne uno che non sia stampabile, con le dovute conseguenze, va quindi fatto con cautela.

Mi sono espresso male, lo capisco, ma l'ho fatto solo per non ripetere il termine "String"
--- i due messaggi sono stati uniti ---
Vi ringrazio ancora per l'attenzione con cui mi seguite.

Devo dire che il mio messaggio d'apertura non sperava di accogliere tanto fervore. :hihi:

Volevo soltanto rendervi partecipi al mio piccolo successo in termini di crescita. Tutto qui.
Infatti, alla fine, sono contento lo stesso :dancinghae:
--- i due messaggi sono stati uniti ---
Ho notato ora che a questa ... chiamiamola "discussione" è stato imposto il prefisso di <DOMANDA>,
ma, secondo me, va aggiunto nella scaletta dei prefissi un altro termine come per es. "esperienza", "comunicato", "condivione", ...
 
Ultima modifica:
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top