Java Char to Integer

use*_*074 4 java

我知道这可能是一个基本问题.但我想说清楚.如果我有一个值为'9'的java char c,我可以通过执行以下操作将其转换为int:c - '0'?我曾经玩这个,从来没有问题,但有人告诉它是错的?为什么?

Ell*_*sch 5

是的,你可以.但是,我强烈建议你使用Character.digit(char, int)(在哪里int基数),类似于

char ch = '9';
int i = Character.digit(ch, 10);
System.out.printf("ch = %c, i = %d%n", ch, i);
Run Code Online (Sandbox Code Playgroud)

我用你的方法看到的唯一问题是它有点复杂,你应该验证范围

if (ch >= '0' && ch <= '9') 
Run Code Online (Sandbox Code Playgroud)


Gon*_*n I 5

我不认为这是错的,你可以做到.

int x = '9' - '0';
Run Code Online (Sandbox Code Playgroud)

但是,如果你也想让它适用于十六进制字符'A'= 10,'B'= 11等,你可以这样做

int x = Character.getNumericValue('9');
Run Code Online (Sandbox Code Playgroud)

编辑:根据这篇文章中的其他答案,Character.getNumericValue实际上会一直到'Z'= 35,所以如果你想安全使用

int x = Character.digit('9', 10);  // for base 10
int x = Character.digit('9', 16);  // for base 16
int x = Character.digit('B', 16);  // for base 16
Run Code Online (Sandbox Code Playgroud)