Java 减去';0';用于手动将字符串转换为int
嗨,我有这个代码,可以手动将字符串转换为intJava 减去';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 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=9ASCII值“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码)