下面是一个代码片段,
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,我该怎么办?
int a = 1;
char b = (char) a;
System.out.println(b);
将打印出带有Unicode 代码点1 的字符(开头字符,不可打印;请参阅此表:C0 Controls and Basic Latin,与 ASCII 相同)
int a = '1';
char b = (char) a;
System.out.println(b);
将打印出带有 Unicode 代码点 49 的字符(对应于 '1')
如果你想转换一个数字(0-9),你可以添加 48 并强制转换,或者类似Character.forDigit(a, 10);
.
如果您想将一个int
视为 Unicode 代码点的转换,您可以使用Character.toChars(48)
例如。
我的回答类似于 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”。您可以通过这种方式将任何数字转换为字符,并且比使用.toString()
方法然后通过方法减去数字更智能和更好的.charAt()
方法。
看来您正在寻找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
也称为)。
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);
有了这个,您可以将十进制值作为 char 类型。我使用索引为 0 的 charAt(),因为该字符串中的唯一值是“a”,而且如您所知,“a”在该字符串中的位置从 0 开始。
对不起,如果我的英语解释得不好,希望对你有所帮助。
您可能希望将其打印为“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 :)
int a = 1;
char b = (char) (a + 48);
在 ASCII 中,每个字符都有自己的编号。char '0' 是十进制的 48,'1' 是 49,依此类推。因此,如果
char b = '2';
int a = b = 50;
每当您将强制转换整数键入 char 时,它将返回该 int 的 ascii 值(一旦通过 ascii 表更好地理解)
int a=68;
char b=(char)a;
System.out.println(b);//it will return ascii value of 68
//output- D
如果我们谈论的是类类型 - 而不是原语,则必须完成以下技巧:
Integer someInt;
Character someChar;
someChar = (char)Integer.parseInt(String.valueOf(someInt));
没有人在这里回答真正的“问题”:您正在正确地将 int 转换为 char;在 ASCII 表中,十进制值 01 是“标题开头”,一个非打印字符。尝试查找 ASCII 表并将 int 值转换为 33 和 7E 之间;这会让你看到角色。
在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);
无论您的系统编码是什么,这都适用,并且适用于多位数字。
首先,将int
(或其他类型)转换为String
,
int a = 1;
String value = String.valueOf(a);
然后,将其转换String
为char
.
char newValue = value.charAt(0);
您可以通过这种方式避免空输出...
System.out.println(newValue);
确保整数值是字母/字符的 ASCII 值。
如果没有,那就做吧。
for e.g. if int i=1
然后将 64 添加到它,使其变为 65 = 'A' 的 ASCII 值 然后使用
char x = (char)i;
print x
// 'A' will be printed
有一种方法int
可以转换为char
甚至不使用 ASCII 值。
例子:
int i = 2;
char ch = Integer.toString(i).charAt(0);
System.out.println(ch);
解释 :
首先将整数转换为字符串,然后使用 String 函数charAt()
从字符串中提取字符。由于整数只有一个数字,因此索引0
被赋予charAt()
函数。
如果您想根据其 ascii 代码打印 ascii 字符并且不想超出此范围(如 unicode 字符),您可以将您的变量定义为一个字节,然后使用 (char) 转换。IE:
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
查看以下程序以获得完整的转换概念
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");
}
}
希望,它至少会有所帮助
如果要将字符转换为其对应的整数,可以执行以下操作:
int a = (int) 'a';
char b = (char) a;
System.out.println(b);
发生这种情况是因为在 ASCII 中有些项目无法正常打印。
例如,数字 97 到 122 是对应于小写字母 a 到 z 的整数。
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);
}
}
}