嗨,我有这段代码可以手动将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”?
该方法.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,这是想要的结果。
| 归档时间: |
|
| 查看次数: |
1684 次 |
| 最近记录: |