【问题标题】:Java Char to Integer [duplicate]Java Char到整数[重复]
【发布时间】:2014-09-24 00:28:12
【问题描述】:

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

【问题讨论】:

  • '11' 不是字符。
  • 这不是“错误的”。有些人可能认为它的风格不好,但由于 Java 被指定使用 Unicode 进行字符编码,所以它总是可以工作的(前提是 c 始终是十进制数字字符)。

标签: java


【解决方案1】:

我觉得没有错,你可以的。

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

【讨论】:

  • 你的意思是'9' - '0'
【解决方案2】:

是的,你可以。但是,我强烈建议您使用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 用于指向正确的 API。但是,如果可以通过其他方式确定 c 在代码中的该点始终是十进制数字,则不需要验证。
猜你喜欢
  • 2013-10-03
  • 2019-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 2016-10-02
  • 1970-01-01
相关资源
最近更新 更多