Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 减去';0';用于手动将字符串转换为int_Java_Parseint - Fatal编程技术网

Java 减去';0';用于手动将字符串转换为int

Java 减去';0';用于手动将字符串转换为int,java,parseint,Java,Parseint,嗨,我有这个代码,可以手动将字符串转换为int int num = 0; for(int i = 0; i < length(number); i++) { num *= 10; num += number.charAt(i) - '0'; println("i :" + num); } int num=0; for(int i=0;i

嗨,我有这个代码,可以手动将字符串转换为int

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

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

如果
数字
字符串
解释为数字,则
数字。字符(i)
'0'--'9'
中的一个字符,如果将
字符
表示为数字,它将是
0--9
,移动到
'0'
(类似于
'0'-'0'+9
),因此为了获得准确的数字(如
int
:number),您应该从
字符中减去
'0'
的代码,如果
数字
字符串
解释为数字,则
数字.charAt(i)
是来自
'0'--'9'
的字符,如果将
字符表示为数字,则它将是
0--9
,移动到
'0'
的代码(类似于
'0'--'0'+9
),以便获得准确的数字(如
int
:number),您应该从
字符中减去
'0'
,字符'0'等于字符48

'0' 48
'1' 49
'2' 50
...
'9' 57
例如:


如果number.charAt(i)是'9',9'是字符57,那么57-48=9

字符'0'等于字符48

'0' 48
'1' 49
'2' 50
...
'9' 57
例如:


如果number.charAt(i)为“9”,9为字符57,则57-48=9

ASCII值“0”为48,“1”为49,依此类推。
示例:如果字符变量“ch”包含“5”,那么“5”的ASCII值是53。如果我们要执行数学运算“5”,我们必须将其转换为int,所以我们必须得到它的整数值,所以我们使用ch-“0”(这意味着“5”-“0”意味着53-48,也就是5)通过这样做,我们得到整数值“5”。现在我们可以对其执行数学运算。如果对“5”执行数学运算,编译器将其视为53。

ASCII值“0”为48,“1”为49,依此类推。 示例:如果字符变量“ch”包含“5”,那么“5”的ASCII值是53。如果我们要执行数学运算“5”,我们必须将其转换为int,所以我们必须得到它的整数值,所以我们使用ch-“0”(这意味着“5”-“0”意味着53-48,也就是5)通过这样做,我们得到整数值“5”。现在我们可以对其执行数学运算。如果对“5”执行数学运算,编译器将其视为53。

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

一个简单的解决方案是:

char digit = number.charAt(i);
if (digit == '0') {
    num += 0;
} else if (digit == '1') {
    num += 1;
}
但我们可以使用字符的ASCII值来简化此操作。请查看(仅列'Dec'和'Chr')。您将看到字符
0
的值实际上为48。因此,如果我们从字符中减去48,我们将检索到正确的值:

int num = digit - 48;
这甚至可以通过直接放置将由编译器替换的字符来简化:

int num = digit - '0';
例如:

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

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

一个简单的解决方案是:

char digit = number.charAt(i);
if (digit == '0') {
    num += 0;
} else if (digit == '1') {
    num += 1;
}
但我们可以使用字符的ASCII值来简化此操作。请查看(仅列'Dec'和'Chr')。您将看到字符
0
的值实际上为48。因此,如果我们从字符中减去48,我们将检索到正确的值:

int num = digit - 48;
这甚至可以通过直接放置将由编译器替换的字符来简化:

int num = digit - '0';
例如:


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

这与ASCII码有关吗?这是因为
char
实际上是一个以不同方式解释的
。因此,在某种程度上,你在计算“距离
'0'
”请参阅此示例:
int i='F'-'A';
F
A
的值是什么?例如
'3'
的值是什么?(提示:它不是3)提示:它只起作用,因为数字0到9具有顺序ASCII码(或Unicode码)它与ASCII码有关吗?这是因为
char
实际上是一个
short
以不同的方式进行解释。因此,在某种程度上,您计算的是“距离
'0'
”请参阅此示例:
int i='F'-'A';
F
A
的值是什么?例如
'3'
的值是什么?(提示:它不是3)提示:它只起作用,因为数字0到9具有顺序ASCII码(或Unicode码)