Java - проблема с приведением int к char - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть некоторая путаница относительно приведения типов данных int к типу char, вот что у меня есть;

int k = 3;
System.out.println((char)k + " " + k)

Выход должен был быть

3 3

пока, я получил это вместо

 3

Может ли кто-нибудь объяснить мне, почему это происходит?

Ответы [ 3 ]

0 голосов
/ 01 ноября 2018

ASCII значение (char) 3 равно: Конец текста

Если вы хотите получить числовое значение, вам нужно использовать числовое значение 51, которое является значением ASCII 3:

int k = 51;
System.out.println((char) k + " " + k);

Это дает вывод:

3 51

Полная таблица ASCII может быть найдена здесь

0 голосов
/ 01 ноября 2018

В дополнение к другим ответам: Если вы точно знаете, что 0 <= k <= 9, вы можете использовать

System.out.println((char)(k + '0'));

чтобы распечатать "зашифрованную" версию вашего целого числа. Если k < 0 или k > 9, то ни один символ (символ) не описывает его. В этом случае вам придется использовать строку, которая в основном представляет собой массив символов:

System.out.println(Integer.toString(k));
0 голосов
/ 01 ноября 2018

char '3' не имеет числового значения 3. Его числовое значение равно 51.

Будет напечатано 3:

int k = 51;
System.out.println((char)k);

char с числовым значением 3 является невидимым символом.

Если вы хотите преобразовать одну цифру int в соответствующую char, вы можете написать

int k = 3;
char three = (char)('0' + k);
System.out.println(three);
...