Преобразование 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, как в первом фрагменте, что мне делать?
Ответы
Ответ 1
int a = 1;
char b = (char) a;
System.out.println(b);
распечатает char с помощью значения ascii 1 (начало заголовка char, которое невозможно распечатать).
int a = '1';
char b = (char) a;
System.out.println(b);
распечатает char с значением ascii 49 (один соответствует "1" )
Если вы хотите преобразовать цифру (0-9), вы можете добавить 48 к ней и произнести, или что-то вроде Character.forDigit(a, 10);
.
Если вы хотите преобразовать int
, как в значение ascii, вы можете использовать Character.toChars(48)
, например.
Ответ 2
Мой ответ похож на ответ 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()
.
Ответ 3
Кажется, что вы ищете метод Character.forDigit
:
final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'
Существует также метод, который может конвертировать из char обратно в int:
int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'
Обратите внимание, что, изменяя RADIX
, вы также можете поддерживать шестнадцатеричный (radix 16) и любой радиус до 36 (или Character.MAX_RADIX
, как это также известно).
Ответ 4
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.
Извините, если мой английский недостаточно объяснен, надеюсь, что это вам поможет.
Ответ 5
Никто не ответил на настоящий "вопрос" здесь: вы преобразовываете int в char правильно; в таблице ASCII десятичное значение 01 является "началом заголовка", непечатаемым символом. Попробуйте найти таблицу ASCII и преобразовать значение int между 33 и 7E; что даст вам персонажи, на которые можно смотреть.
Ответ 6
Всякий раз, когда вы вводите целое число целых чисел в char, оно возвращает значение ascii этого int (один раз пройдите через таблицу ascii для лучшего понимания)
int a=68;
char b=(char)a;
System.out.println(b);//it will return ascii value of 68
//output- D
Ответ 7
Если мы говорим о типах классов, а не о примитивах, необходимо сделать следующий трюк:
Integer someInt;
Character someChar;
someChar = (char)Integer.parseInt(String.valueOf(someInt);
Ответ 8
int a = 1;
char b = (char) (a + 48);
В ASCII каждый символ имеет свой номер. И char '0' это 48 для десятичного числа, '1' это 49 и так далее. Так что если
char b = '2';
int a = b = 50;
Ответ 9
В java a char есть int. Ваш первый фрагмент печатает символ, соответствующий значению 1 в схеме кодирования по умолчанию (что, вероятно, является Unicode). Символ Unicode U + 0001 является непечатаемым символом, поэтому вы не видите никакого вывода.
Если вы хотите распечатать символ "1", вы можете посмотреть значение "1" в используемой схеме кодирования. В Unicode это 49 (то же, что и ASCII). Но это будет работать только для цифр 0-9.
Возможно, вам лучше использовать строку, а не char, и использовать встроенный метод toString()
Java:
int a = 1;
String b = toString(a);
System.out.println(b);
Это будет работать независимо от вашей системной кодировки и будет работать для многозначных чисел.
Ответ 10
если вы хотите печатать символы ascii на основе их ascii-кода и не хотите выходить за рамки этого (например, символы Unicode), вы можете определить свою переменную в виде байта, а затем использовать конвертер (char). то есть:.
public static void main(String[] args) {
byte b = 65;
for (byte i=b; i<=b+25; i++) {
System.out.print((char)i + ", ");
}
BTW, код ascii для буквы "A" равен 65
Ответ 11
Убедитесь, что целочисленное значение является значением ASCII алфавита/символа.
Если нет, то сделайте это.
for e.g. if int i=1
затем добавьте 64 к нему так, чтобы оно стало 65 = ASCII-значение 'A'. Затем используйте
char x = (char)i;
print x
// 'A' will be printed
Ответ 12
посмотрите на следующую программу для полной концепции преобразования
class typetest{
public static void main(String args[]){
byte a=1,b=2;
char c=1,d='b';
short e=3,f=4;
int g=5,h=6;
float i;
double k=10.34,l=12.45;
System.out.println("value of char variable c="+c);
// if we assign an integer value in char cariable it possible as above
// but it not possible to assign int value from an int variable in char variable
// (d=g assignment gives error as incompatible type conversion)
g=b;
System.out.println("char to int conversion is possible");
k=g;
System.out.println("int to double conversion is possible");
i=h;
System.out.println("int to float is possible and value of i = "+i);
l=i;
System.out.println("float to double is possible");
}
}
надеюсь, это поможет хоть что-то
Ответ 13
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<str.length();i++)
{
arr[i]=chArr[i];
}
System.out.println("\nI have stored it in array by using ASCII value");
for(int i=0;i<arr.length;i++)
{
System.out.print(" "+arr[i]);
}
System.out.println("\nI have stored it in array by using ASCII value to original content");
for(int i=0;i<arr.length;i++)
{
ch=(char)arr[i];
System.out.print(" "+ch);
}
}
}
Ответ 14
Если вы хотите преобразовать символ в соответствующее целое число, вы можете сделать что-то вроде этого:
int a = (int) 'a';
char b = (char) a;
System.out.println(b);
Это происходит потому, что в ASCII есть некоторые элементы, которые нельзя распечатать в обычном режиме.
Например, числа с 97 по 122 являются целыми числами, соответствующими строчным буквам от a до z.