Преобразование 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.