什么是';0';你喜欢Java吗?
我试图找到一个数字中所有数字的乘积,我将其存储为字符串(由于int和长长度限制) 因此,数字如下所示:什么是';0';你喜欢Java吗?,java,Java,我试图找到一个数字中所有数字的乘积,我将其存储为字符串(由于int和长长度限制) 因此,数字如下所示: final String number = "1234567898765432123......etc" 如果我使用此代码,它可以工作: product *= number.charAt(i + j) - '0'; 如果我删除“0”,则不会发生错误 我从另一个在线资源获得了这个代码。有人能解释一下“0”的作用吗?Ascii字符实际上是数字。和0。。9数字是从十进制48(0x30十六进制)开
final String number = "1234567898765432123......etc"
如果我使用此代码,它可以工作:
product *= number.charAt(i + j) - '0';
如果我删除“0”,则不会发生错误
我从另一个在线资源获得了这个代码。有人能解释一下“0”的作用吗?Ascii字符实际上是数字。和
0。。9
数字是从十进制48(0x30十六进制)开始的数字
因此,要获得任何字符数字的值,只需删除“0”,即48
'1' - '0' => 1
49 - 48 => 1
如果不删除“0”(48),则总和将超过48*numberOfDigits
请参阅以查找其中的数字
请注意,
'0'
是字符0
,而不是包含字符'0'
的字符串'0'
,字符和整数实际上是一样的,因为每个字符都有一个代码(ASCII,但在某些上下文中也有Unicode)
通过从字符串中的任何数字减去'0'
,可以得到该整数的实际值
'0' > 48
48 - 48 = 0 (integer value)
这同样适用于所有其他整数。您可以对其他字符执行类似操作,例如
字母-'A'
根据字母表中的位置为每个字母分配一个数字。让我们检查一下ASCII图表
您可以看到Dec值为“0”->“9”
charAt()方法仅获取字符,在计算时自动转换为int值
'0' -> 48
'1' -> 49
...
'9' -> 57
在负“0”之后:
'0' - '0' -> 48 - 48 = 0
'1' - '0' -> 49 - 48 = 1
...
'9' - '0' -> 57 - 48 = 9
毕竟,'n'-'0'=n带n是一个数字字符字符存储为数字。 例如,“0”在ASCII中等于48。因此,如果要将字符转换为整数,必须删除“0”(或者删除48的方式相同):
更多信息:'0'是零的字符值 编写字符串时,您正在编写一个“char”数据类型数组,编译器将其转换为ASCII值(具有相应的十进制数值) 当你打电话的时候
number.charAt(i + j);
number.charAt(i + j) - '0';
实际上,您正在生成一个ASCII值
“0”的ASCII值为:
四十八
“1”:
49
。
.
‘9’:
57
所以当你打电话的时候
number.charAt(i + j);
number.charAt(i + j) - '0';
实际上,您正在运行一个ASCII值减去48的操作,它的实际值是一个整数
e、 g
('9'-'0')=(57-48)=(9-0)=9从
数字中删除0
。字符(i+j)
将以数字(或整数
的形式提供相同的字符
在任何表达式中使用字符时,该字符将替换为其ASCII
值
'0'
(字符0)的ASCII值为48
'1'
(字符0)的ASCII值为49
现在,如果
number.charAt(i+j)
是'1'
,那么在表达式中,'1'
被49替换,'0'
被48替换,这将为您提供1
(整数
)结果。这些ascii字符可以转换为整数。这些是ascii表上的索引,所以请检查并重新考虑一下,我想您会得到它;)