以下是代码段
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,我该怎么办?
答案 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的整数。