Nedenfor er et kodeutdrag,
int a = 1;
char b = (char) a;
System.out.println(b);
Men det jeg får er tom utdata.
int a = '1';
char b = (char) a;
System.out.println(b);
Jeg får 1 som utdata.
Kan noen forklare dette? Og hvis jeg vil konvertere en int til en char som i det første utdraget, hva skal jeg gjøre?
int a = 1;
char b = (char) a;
System.out.println(b);
vil skrive ut tegnet med ascii-verdien 1 (start-of-heading-tegn, som ikke kan skrives ut).
int a = '1';
char b = (char) a;
System.out.println(b);
vil skrive ut tegnet med ascii-verdien 49 (som tilsvarer '1').
Hvis du vil konvertere et siffer (0-9), kan du legge til 48 til det og caste, eller noe som Character.forDigit(a, 10);
.
Hvis du vil konvertere en int
som i ascii-verdi, kan du for eksempel bruke Character.toChars(48)
.
int a = 1;
char b = (char) a;
System.out.println(b);
hola, vel, jeg gikk gjennom det samme problemet, men det jeg gjorde var følgende kode.
int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);
Med dette får du desimalverdien som en char-type. Jeg brukte charAt () med indeks 0 fordi den eneste verdien i den strengen er 'a' og som du vet, posisjonen til 'a' i den strengen starter på 0.
Beklager hvis engelsken min ikke er godt forklart, håper det hjelper deg.
I java er et tegn int en int. Det første utdraget ditt skriver ut tegnet som tilsvarer verdien 1 i standard tegnkodingsskjema (som sannsynligvis er Unicode). Unicode-tegnet U+0001 er et tegn som ikke skrives ut, og det er derfor du ikke ser noen utdata.
Hvis du vil skrive ut tegnet '1', kan du slå opp verdien av '1' i kodingsskjemaet du bruker. I Unicode er dette 49 (det samme som ASCII). Men dette fungerer bare for sifrene 0-9.
Det kan være bedre å bruke en streng i stedet for et tegn, og bruke Javas innebygde "toString()-metode:
int a = 1;
String b = toString(a);
System.out.println(b);
Dette vil fungere uansett hvilken systemkoding du har, og vil fungere for flersifrede tall.