it-swarm.com.ru

Конвертировать int в char в java

Ниже приведен фрагмент кода,

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, как в первом фрагменте?

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

распечатает символ со значением ascii 1 (начальный заголовок, который не может быть распечатан).

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

распечатает символ со значением 49 ascii (один соответствует '1')

Если вы хотите преобразовать цифру (0-9), вы можете добавить к ней 48 и привести, или что-то вроде Character.forDigit(a, 10);.

Если вы хотите преобразовать int как в значение ascii, вы можете использовать Character.toChars(48), например.

86
jh314

Мой ответ похож на ответ jh314, но я объясню немного глубже.

Что вы должны сделать в этом случае:

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

Здесь мы использовали '0', потому что символы на самом деле представлены значениями ASCII. «0» - это символ, представленный значением 48. 

Мы набрали (a + '0') и, чтобы сложить их, Java преобразовала '0' в значение ASCII, которое равно 48, а a равно 1, поэтому сумма равна 49. Затем мы сделали следующее:

(char)(49)

Мы преобразовали int в char. ASCII эквивалентный 49 равен '1'. Вы можете преобразовать любую цифру в символ таким образом, и это будет умнее и лучше, чем использование метода .toString(), а затем вычитает цифру методом .charAt().

43
Haggra

Похоже, вы ищете метод Character.forDigit:

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

Существует также метод, который может преобразовать символ обратно в тип int:

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

Обратите внимание, что, изменяя RADIX, вы также можете поддерживать шестнадцатеричное (основание 16) и любое основание до 36 (или Character.MAX_RADIX, как его еще называют).

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

привет, хорошо, я прошел через ту же проблему, но то, что я сделал, был следующий код.

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

При этом вы получите десятичное значение как тип символа. Я использовал charAt () с индексом 0, потому что единственное значение в этой строке - это «а», и, как вы знаете, позиция «а» в этой строке начинается с 0.

Извините, если мой английский не очень хорошо объяснен, надеюсь, он вам поможет.

9
3ryck
int a = 1;
char b = (char) (a + 48);

В ASCII каждый символ имеет свой номер. И char '0' это 48 для десятичного числа, '1' это 49, и так далее. Так что если

char b = '2';
int a = b = 50;
1
bigpig

Если мы говорим о типах классов, а не о примитивах, необходимо сделать следующий трюк:

Integer someInt;
Character someChar;

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

Никто не ответил на настоящий «вопрос» здесь: вы правильно конвертируете int в char; в таблице ASCII десятичное значение 01 - «начало заголовка», непечатный символ. Попробуйте найти таблицу ASCII и преобразовать значение типа int между 33 и 7E; это даст вам персонажей на что посмотреть.

1
apraetor

если вы хотите печатать символы ascii на основе их кода ascii и не хотите выходить за их пределы (например, символы юникода), вы можете определить свою переменную как байт, а затем использовать преобразование (char). т.е .:

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

Кстати, ASCII код для буквы «А» составляет 65

0
MohS

В Java символ это Int. Ваш первый фрагмент выводит символ, соответствующий значению 1 в схеме кодировки символов по умолчанию (которая, вероятно, является Unicode). Символ Unicode U + 0001 - это непечатный символ, поэтому вы не видите никаких выходных данных.

Если вы хотите распечатать символ «1», вы можете найти значение «1» в используемой схеме кодирования. В Юникоде это 49 (так же, как ASCII). Но это будет работать только для цифр 0-9.

Возможно, вам лучше использовать String, а не char, и использовать встроенный в Java метод toString():

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

Это будет работать независимо от кодировки вашей системы и работать с многозначными числами.

0
david25272

Убедитесь, что целочисленное значение равно ASCII значению алфавита/символа.

Если нет, то сделайте это.

for e.g. if int i=1

затем добавьте к нему 64, чтобы оно стало 65 = ASCII значением 'A' Затем используйте

char x = (char)i;

print x

// 'A' will be printed 
0
Mayur Gudi

Всякий раз, когда вы набираете приведение целого числа к типу char, он возвращает значение ascii для этого int (один раз просмотрите таблицу ascii для лучшего понимания)

    int a=68;
    char b=(char)a;

    System.out.println(b);//it will return ascii value of 68

    //output- D
0
ajay verma