如何在Java中将字符转换为整数?

82

(我是Java编程的新手)

例如,我有:

char x = '9';

我需要获取引号中的数字,即数字9本身。我尝试了以下方法,

char x = 9;
int y = (int)(x);

但是它没有起作用。

那么我应该怎么做才能得到引号内的数字呢?

4个回答

176

ASCII表按照字符'0'的值为基准,以九递增到字符'9'的值。

因此,你可以通过减去'0'的值来得到十进制数字字符的整数值。

char x = '9';
int y = x - '0'; // gives the int value 9

3
请看ASCII表,任何一个char都有相应的十进制数值。因此,您可以相减得到数值结果。自然而然地,数字0到9按顺序排列,所以数学计算起来更容易。 - David
请解释一下这段代码的作用:somechar-48。更多信息请访问https://dev59.com/jE7Sa4cB1Zd3GeqP7uhD。 - Andrew Tobilko
2
@David - 就性能而言,这个答案比Character.getNumericValue(x)更好吗? - MasterJoe
1
在 ASCII 中,'0' 等于 48,'1' 等于 49,以此类推。在这里找到有关该理论的有用解释:https://beginnersbook.com/2019/04/java-char-to-int-conversion/ - nanospeck
一个漂亮的ASCII表格可以在这里找到:https://www.alpharithms.com/ascii-table-512119/ - magicsign

58

如果你有一个'9'字符,它会储存其ASCII代码,所以要获取int值,你有两种方法

char x = '9';
int y = Character.getNumericValue(x);   //use a existing function
System.out.println(y + " " + (y + 1));  // 9  10


char x = '9';
int y = x - '0';                        // substract '0' code to get the difference
System.out.println(y + " " + (y + 1));  // 9  10

实际上,这也可以工作:


char x = 9;
System.out.println(">" + x + "<");     //>  < prints a horizontal tab
int y = (int) x;
System.out.println(y + " " + (y + 1)); //9 10

您存储的是代码9,它对应于水平制表符(您可以在将其打印为String时看到,但您也可以像上面所示一样将其用作int


27

您可以使用Character类的静态方法从字符中获取数字值。

char x = '9';

if (Character.isDigit(x)) { // Determines if the specified character is a digit.
    int y = Character.getNumericValue(x); //Returns the int value that the 
                                          //specified Unicode character represents.
    System.out.println(y);
}

2
如果您想获取字符的ASCII值,或者将其转换为int类型,您需要将char转换为int。
什么是转换?转换是指我们明确地从一个基本数据类型或类转换到另一个。以下是一个简要示例。
public class char_to_int
{
  public static void main(String args[])
  {
       char myChar = 'a';
       int  i = (int) myChar; // cast from a char to an int
       System.out.println ("ASCII value - " + i);
  }

在这个例子中,我们有一个字符('a'),然后将其转换为整数。打印这个整数将给出 'a' 的 ASCII 值。

OP 不想获取 ASCII 值,他想要获取将该字符解释为实际数字时的值。对于 '9',他想要返回 9 而不是 57('9' 的 ASCII 值)。 - Adam Burley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接