我知道这可能是一个基本问题。但我想说清楚。 如果我有一个具有值' 9'的java char c,我可以通过执行以下操作将其转换为int: c - ' 0' ? 我曾经玩过这个,从来没有遇到过问题,但是有人告诉它错了?为什么?
答案 0 :(得分: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);
我用你的方法看到的唯一问题是它有点复杂,你应该验证范围
if (ch >= '0' && ch <= '9')
答案 1 :(得分:5)
我不认为这是错的,你可以做到。
int x = '9' - '0';
但如果你也想让它适用于十六进制字符'A'= 10,'B'= 11等,你可以这样做
int x = Character.getNumericValue('9');
编辑:根据这篇文章中的其他答案 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