减去“ 0”可将String手动转换为int

Max*_*Max 1 java parseint

嗨,我有这段代码可以手动将String转换为int。

int num = 0;
for(int i = 0; i < length(number); i++) {
    num *= 10;
    num += number.charAt(i) - '0';
    println("i :" + num);
}
Run Code Online (Sandbox Code Playgroud)

为什么我们在末尾减去“ 0”?

Abs*_*ind 5

该方法.charAt(int position)从您的数字字符串返回单个字符。由于您的字符串包含数字,因此您将收到一个包含数字(0 - 9)的字符。下一步是将该字符转换为int。

一个幼稚的解决方案是:

char digit = number.charAt(i);
if (digit == '0') {
    num += 0;
} else if (digit == '1') {
    num += 1;
}
Run Code Online (Sandbox Code Playgroud)

但是我们可以使用字符的ASCII值来简化此过程。看一下这个ASCII表(仅列'Dec'和'Chr')。您将看到该字符0的值实际上为48。因此,如果我们从字符中减去48,我们将获取正确的值:

int num = digit - 48;
Run Code Online (Sandbox Code Playgroud)

通过直接放置将由编译器替换的字符,甚至可以进一步简化此操作:

int num = digit - '0';
Run Code Online (Sandbox Code Playgroud)

例:

字符'4'的ASCII值为52。如果我们减去48,将得到4,这是想要的结果。