我被一些我真的不理解的东西困住了,我希望这里有人能理解。
谁能解释一下为什么“nextOne”的值是 51?很明显,表达式数组中的索引 2 处是数字 3,那么为什么它在 nextOne 中存储 51 而不是 3?
这里是:
我被一些我真的不理解的东西困住了,我希望这里有人能理解。
谁能解释一下为什么“nextOne”的值是 51?很明显,表达式数组中的索引 2 处是数字 3,那么为什么它在 nextOne 中存储 51 而不是 3?
这里是:
数组中的字符是“3”。它的 Unicode 值为 51 - 它是字符 U+0033。
如果您将类型更改为nextOne
tochar
而不是int
,您将看到 '3'。
理解作为字符的数字与整数值之间的区别很重要——同时还要理解隐藏在字符后面的数字;在 Java 中,它们基本上是 UTF-16 代码单元。
因为 51 是数字的 ASCII 值3
。
该字符'3'
对应于一个整数值51
(它的 ascii/unicode 值)。
第一个数字是3
,它的 ASCII 码是 51。
51 是三个的 ASCII 码,因为expression
它是一个字符数组,并且nextOne
是一个int
,所以你必须将 char 转换为一个 int
nextOne 包含字符 的值,在字符“3”的情况下为 51。
如果你想要字符所代表的数字,你需要转换它。对于 ASCII,这可以通过减去字符“0”的值来完成。
如果您想要减去数字'0'
以获得整数值,您会看到字符“3”的 ascii 代码
我做的!它现在有效,没有你们,我无法做到。然而!有趣的是,你们所有人都为我建议了选项,但没有(在我看来)最终选项。你们告诉我存储的整数是 3 的 ASCII 码,而不是实际的整数 3。这让我想起了 Character 类中的一个方法 getNumericValue(char)。使用这种方法,我只需从 char 数组中检索整数 3 而无需转换自己。
nextNumber = nextNumber * 10 + Character.getNumericValue(expression[k]);
感谢@howard 将链接编辑到上传的图片中