我知道这可能是一个基本问题.但我想说清楚.如果我有一个值为'9'的java char c,我可以通过执行以下操作将其转换为int:c - '0'?我曾经玩这个,从来没有问题,但有人告诉它是错的?为什么?
是的,你可以.但是,我强烈建议你使用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)
我不认为这是错的,你可以做到.
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)