在java中将int转换为char

use*_*480 111 java int char

以下是代码段,

int a = 1;
char b = (char) a;
System.out.println(b);
Run Code Online (Sandbox Code Playgroud)

但我得到的是空输出.

int a = '1';
char b = (char) a;
System.out.println(b);
Run Code Online (Sandbox Code Playgroud)

我将得到1作为我的输出.

有人可以解释一下吗?如果我想在第一个片段中将int转换为char,我该怎么办?

jh3*_*314 94

int a = 1;
char b = (char) a;
System.out.println(b);
Run Code Online (Sandbox Code Playgroud)

将打印出ascii值为1的字符(标题字符开头,不可打印).

int a = '1';
char b = (char) a;
System.out.println(b);
Run Code Online (Sandbox Code Playgroud)

将打印出ascii值为49的char(一个对应于'1')

如果你想转换一个数字(0-9),你可以添加48和转换,或类似的东西Character.forDigit(a, 10);.

如果要转换int为ascii值,可以使用Character.toChars(48)例如.

  • `System.out.println('b'+ 3);`我如何使用println获得`b3`而不是`101`?任何其他方式而不是printf? (2认同)
  • @UnKnown你需要使它成为一个字符串而不是一个字符串,如下所示System.out.println("b"+ 3); (2认同)

Hag*_*gra 50

我的答案类似于jh314的答案,但我会更深入地解释一下.

在这种情况下你应该做的是:

int a = 1;
char b = (char)(a + '0');
System.out.println(b);
Run Code Online (Sandbox Code Playgroud)

在这里,我们使用'0',因为字符实际上由ASCII值表示.'0'是一个char,由值48表示.

我们输入(a + '0')并为了添加它们,Java将'0'转换为其ASCII值为48,a为1,因此总和为49.那么我们所做的是:

(char)(49)
Run Code Online (Sandbox Code Playgroud)

我们铸造intchar.相当于49的ASCII是'1'.您可以通过这种方式将任何数字转换为char,并且比使用.toString()方法更智能,更好,然后通过.charAt()方法减去数字.


Sim*_*erg 37

看起来你正在寻找Character.forDigit方法:

final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'
Run Code Online (Sandbox Code Playgroud)

还有一种方法可以从char转换回int:

int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'
Run Code Online (Sandbox Code Playgroud)

请注意,通过更改,RADIX您还可以支持十六进制(基数16)和任何最大为36的基数(或者Character.MAX_RADIX也称为).


小智 9

int a = 1;
char b = (char) a;
System.out.println(b);
Run Code Online (Sandbox Code Playgroud)

好吧,我经历了同样的问题,但我做的是以下代码.

int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);
Run Code Online (Sandbox Code Playgroud)

使用此方法,您将获得十进制值作为char类型.我使用索引为0的charAt(),因为该字符串中唯一的值是'a',如您所知,该字符串中'a'的位置从0开始.

对不起,如果我的英语没有得到很好的解释,希望对你有帮助.


小智 5

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

如果您想要“1”作为输入,则:

int a = 1;
char b = (char)(a + '0');
System.out.println(b);
Run Code Online (Sandbox Code Playgroud)

如果您想要“a”作为输入,则:

int a = 1;
char b = (char)(a-1 + 'a');
System.out.println(b);
Run Code Online (Sandbox Code Playgroud)

java 将 ascii 值转换为 char :)