在java中将int转换为char

时间:2013-08-01 03:51:15

标签: java char int

以下是代码段

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,我该怎么办?

17 个答案:

答案 0 :(得分:91)

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的char(一个对应于'1')

如果您想转换数字(0-9),您可以为其添加48并进行投射,或类似Character.forDigit(a, 10);

如果您想要转换ascii值中的int,可以使用Character.toChars(48)作为示例。

答案 1 :(得分:45)

我的答案与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。相当于49的ASCII是'1'。您可以通过这种方式将任何数字转换为char,并且比使用.toString()方法更智能,更好,然后通过.charAt()方法减去数字。

答案 2 :(得分:36)

您好像在寻找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,您还可以支持十六进制(基数16)和任何最大为36的基数(或Character.MAX_RADIX,因为它也被称为)。

答案 3 :(得分:9)

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类型。我使用索引为0的charAt()因为该字符串中唯一的值是' a'如你所知,' a'进入该字符串从0开始。

很抱歉,如果我的英语没有得到很好的解释,希望对你有帮助。

答案 4 :(得分:3)

您可能希望将其打印为“1”或“a”。

如果你想要'1'作为输入,那么:

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

如果你想要'a'作为输入,那么:

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

java 将 ascii 值转换为 char :)

答案 5 :(得分:1)

这里没有人回答真正的“问题”:你正确地将int转换为char;在ASCII表中,十进制值01是“标题的开头”,一个非打印字符。尝试查找ASCII表并将int值转换为33到7E;这会让你看到角色。

答案 6 :(得分:1)

如果我们讨论类类型 - 而不是原语,则必须完成以下技巧:

Integer someInt;
Character someChar;

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

答案 7 :(得分:1)

int a = 1;
char b = (char) (a + 48);

在ASCII中,每个字符都有自己的编号。 char'0'是十进制的48,'1'是49,依此类推。所以如果

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

答案 8 :(得分:0)

如果你想根据它们的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 + ", ");
    }
顺便说一下,字母'A'的ascii代码是65

答案 9 :(得分:0)

首先,将int(或其他类型)转换为String

int a = 1;
String value = String.valueOf(a);

然后,将String转换为char

char newValue = value.charAt(0);

您可以通过这种方式避免空输出...

System.out.println(newValue);

答案 10 :(得分:0)

有一种方法可以将int转换为char,甚至不使用ASCII值。

示例:

int i = 2;
char ch = Integer.toString(i).charAt(0);
System.out.println(ch);

说明:

首先将整数转换为字符串,然后使用字符串函数charAt()从字符串中提取字符。由于整数只有一位数字,因此0函数将获得索引charAt()

答案 11 :(得分:0)

  

查看以下程序以获取完整的转换概念

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's possible as above
        // but it's 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");
    }
}

希望,它至少会有所帮助

答案 12 :(得分:0)

确保整数值是字母/字符的ASCII值。

如果没有,那就去做吧。

for e.g. if int i=1

然后将64添加到它,使其变为65 =&#39; A&#39;的ASCII值。 然后使用

char x = (char)i;

print x

// 'A' will be printed 

答案 13 :(得分:0)

  

每当你输入转换整数为char时,它将返回该int的ascii值(一旦通过ascii表以便更好地理解)

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

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

    //output- D

答案 14 :(得分:0)

在java中,char 一个int。您的第一个片段在默认字符编码方案(可能是Unicode)中打印出与值1对应的字符。 Unicode字符U + 0001是非打印字符,这就是您看不到任何输出的原因。

如果要打印字符“1”,可以在正在使用的编码方案中查找“1”的值。在Unicode中,这是49(与ASCII相同)。但这只适用于数字0-9。

最好使用String而不是char,并使用Java的内置toString()方法:

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

这适用于您的系统编码,并且适用于多位数字。

答案 15 :(得分:-1)

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);
        }
    }
}

答案 16 :(得分:-2)

如果要将字符转换为相应的整数,可以执行以下操作:

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

这是因为在ASCII中有一些项目无法正常打印。

例如,数字97到122是对应于小写字母a到z的整数。