По-долу е показан фрагмент от код,
int a = 1;
char b = (char) a;
System.out.println(b);
Но това, което получавам, е празен изход.
int a = '1';
char b = (char) a;
System.out.println(b);
Ще получа 1 като изход.
Може ли някой да обясни това? А ако искам да преобразувам int в char, както е в първия фрагмент, какво трябва да направя?
int a = 1;
char b = (char) a;
System.out.println(b);
ще отпечата символа с ascii стойност 1 (символа за начало на заглавието, който не може да се отпечата).
int a = '1';
char b = (char) a;
System.out.println(b);
ще отпечата символа със стойност ascii 49 (съответстващ на '1')
Ако искате да конвертирате цифра (0-9), можете да добавите 48 към нея и да я хвърлите или нещо подобно на Character.forDigit(a, 10);
.
Ако искате да конвертирате инт
като ascii стойност, можете да използвате например Character.toChars(48)
.
int a = 1;
char b = (char) a;
System.out.println(b);
Hola, добре аз преминах през същия проблем, но това, което направих, беше следният код.
int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);
С това получавате десетичната стойност като тип char. Използвах charAt() с индекс 0, защото единствената стойност в този низ е 'a' и както знаете, позицията на 'a' в този низ започва от 0.
Съжалявам, ако английският ми език не е добре обяснен, но се надявам да ви помогне.
В Java char е int. Първият ви фрагмент отпечатва символа, съответстващ на стойност 1 в схемата за кодиране на символи по подразбиране (която вероятно е Unicode). Символът U+0001 от Unicode е непечатащ символ, поради което не виждате никакъв изход.
Ако искате да отпечатате символа '1', можете да потърсите стойността на '1' в използваната от вас схема за кодиране. В Unicode това е 49 (същото като в ASCII). Но това ще работи само за цифрите 0-9.
Може би е по-добре да използвате String, а не char, и да използвате вградения в Java метод toString()
:
int a = 1;
String b = toString(a);
System.out.println(b);
Това ще работи независимо от системното ви кодиране и ще работи за многоцифрени числа.