Converti int in char in java

Di seguito è riportato uno snippet di codice,

int a = 1; char b = (char) a; System.out.println(b); 

Ma quello che ottengo è un output vuoto.

 int a = '1'; char b = (char) a; System.out.println(b); 

Otterrò 1 come risultato.

Qualcuno può spiegarlo? E se voglio convertire un int in un char come nel primo snippet, cosa dovrei fare?

 int a = 1; char b = (char) a; System.out.println(b); 

stamperà il carattere con il valore 1 di ascii (carattere iniziale di intestazione, che non è stampabile).

 int a = '1'; char b = (char) a; System.out.println(b); 

stamperà il carattere con il valore ASCII 49 (uno corrispondente a ‘1’)

Se vuoi convertire una cifra (0-9), puoi aggiungerne 48 e lanciare, o qualcosa come Character.forDigit(a, 10); .

Se vuoi convertire un int come nel valore ASCII, puoi usare Character.toChars(48) per esempio.

La mia risposta è simile alla risposta di jh314, ma ti spiegherò un po ‘più a fondo.

Quello che dovresti fare in questo caso è:

 int a = 1; char b = (char)(a + '0'); System.out.println(b); 

Qui, abbiamo usato ‘0’ perché i caratteri sono in realtà rappresentati da valori ASCII. ‘0’ è un carattere e rappresentato dal valore di 48.

Abbiamo digitato (a + '0') e per aggiungerli, Java ha convertito ‘0’ nel suo valore ASCII che è 48 e a è 1 quindi la sum è 49. Quindi quello che abbiamo fatto è:

 (char)(49) 

Abbiamo lanciato int a char . L’equivalente ASCII di 49 è ‘1’. È ansible convertire qualsiasi cifra in char in questo modo ed è un modo più intelligente e migliore rispetto all’utilizzo del metodo .toString() e quindi sottrarre la cifra con il metodo .charAt() .

Sembra che tu stia cercando il metodo Character.forDigit :

 final int RADIX = 10; int i = 4; char ch = Character.forDigit(i, RADIX); System.out.println(ch); // Prints '4' 

C’è anche un metodo che può convertire da un char a un int:

 int i2 = Character.digit(ch, RADIX); System.out.println(i2); // Prints '4' 

Nota che cambiando il RADIX puoi anche supportare esadecimale (radix 16) e qualsiasi radix fino a 36 (o Character.MAX_RADIX come è noto anche come).

 int a = 1; char b = (char) a; System.out.println(b); 

Ciao, ho passato lo stesso problema ma quello che ho fatto è stato il seguente codice.

 int a = 1 char b = Integer.toString(a).charAt(0); System.out.println(b); 

Con questo si ottiene il valore decimale come tipo di carattere. Ho usato charAt () con indice 0 perché l’unico valore in quella stringa è ‘a’ e come sai, la posizione di ‘a’ in quella stringa inizia da 0.

Scusa se il mio inglese non è ben spiegato, spero che ti aiuti.

Nessuno ha risposto alla vera “domanda” qui: si sta convertendo int in char in modo corretto; nella tabella ASCII il valore decimale di 01 è “start of heading”, un carattere non stampabile. Prova a cercare una tabella ASCII e converti un valore int tra 33 e 7E; che ti darà i personaggi da guardare.

Se stiamo parlando di tipi di class – non primitivi, il seguente trucco deve essere fatto:

 Integer someInt; Character someChar; someChar = (char)Integer.parseInt(String.valueOf(someInt); 

Assicurati che il valore intero sia il valore ASCII di un alfabeto / carattere.

Se no, fallo.

 for eg if int i=1 

quindi aggiungi 64 ad esso in modo che diventi 65 = valore ASCII di ‘A’, quindi usa

 char x = (char)i; print x // 'A' will be printed 

In java un char è un int. Il tuo primo frammento stampa il carattere corrispondente al valore di 1 nello schema di codifica dei caratteri predefinito (che è probabilmente Unicode). Il carattere Unicode U + 0001 è un carattere non stampabile, motivo per cui non si vede alcun output.

Se si desidera stampare il carattere ‘1’, è ansible cercare il valore di ‘1’ nello schema di codifica che si sta utilizzando. In Unicode questo è 49 (lo stesso di ASCII). Ma questo funzionerà solo per le cifre 0-9.

Potrebbe essere meglio usare una stringa piuttosto che un carattere e utilizzare il metodo toString() integrato di Java:

 int a = 1; String b = toString(a); System.out.println(b); 

Funzionerà indipendentemente dalla codifica del sistema e funzionerà con numeri a più cifre.

Ogni volta che si digita il cast intero su char, si restituirà il valore ascii di tale int (una volta passare attraverso la tabella ascii per una migliore comprensione)

  int a=68; char b=(char)a; System.out.println(b);//it will return ascii value of 68 //output- D 

se si desidera stampare caratteri ASCII in base al proprio codice ASCII e non si desidera andare oltre (come i caratteri Unicode), è ansible definire la variabile come un byte e quindi utilizzare la conversione (char). vale a dire:

 public static void main(String[] args) { byte b = 65; for (byte i=b; i<=b+25; i++) { System.out.print((char)i + ", "); } 

A proposito, il codice ASCII per la lettera 'A' è 65

 public class String_Store_In_Array { public static void main(String[] args) { System.out.println(" Q.37 Can you store string in array of integers. Try it."); String str="I am Akash"; int arr[]=new int[str.length()]; char chArr[]=str.toCharArray(); char ch; for(int i=0;i 

Se vuoi convertire un personaggio nel suo numero intero corrispondente, puoi fare qualcosa del genere:

 int a = (int) 'a'; char b = (char) a; System.out.println(b); 

Questo accade perché in ASCII ci sono alcuni elementi che non possono essere stampati normalmente.

Ad esempio, i numeri da 97 a 122 sono numeri interi corrispondenti alle lettere minuscole dalla a alla z.