0

我被一些我真的不理解的东西困住了,我希望这里有人能理解。

谁能解释一下为什么“nextOne”的值是 51?很明显,表达式数组中的索引 2 处是数字 3,那么为什么它在 nextOne 中存储 51 而不是 3?

这里是: 字符数组中读取值的问题

4

9 回答 9

4

数组中的字符是“3”。它的 Unicode 值为 51 - 它是字符 U+0033。

如果您将类型更改为nextOnetochar而不是int,您将看到 '3'。

理解作为字符的数字与整数值之间的区别很重要——同时还要理解隐藏在字符后面的数字;在 Java 中,它们基本上是 UTF-16 代码单元。

于 2011-09-28T19:01:05.707 回答
2

因为 51 是数字的 ASCII 值3

于 2011-09-28T19:01:08.250 回答
2

该字符'3'对应于一个整数值51(它的 ascii/unicode 值)。

于 2011-09-28T19:01:24.940 回答
1

第一个数字是3,它的 ASCII 码是 51。

于 2011-09-28T19:01:22.040 回答
1

51 是三个的 ASCII 码,因为expression它是一个字符数组,并且nextOne是一个int,所以你必须将 char 转换为一个 int

于 2011-09-28T19:03:09.707 回答
1

nextOne 包含字符 的值,在字符“3”的情况下为 51。

如果你想要字符所代表的数字,你需要转换它。对于 ASCII,这可以通过减去字符“0”的值来完成。

于 2011-09-28T19:01:51.710 回答
0

数字 3 的 ASCII 码是 51。下面的表达式将打印"true"在控制台中。

System.out.println('3' == (char) 51);

查看ASCII 表以获取更多信息。

于 2011-09-28T19:03:55.050 回答
0

如果您想要减去数字'0'以获得整数值,您会看到字符“3”的 ascii 代码

于 2011-09-28T19:04:25.590 回答
0

我做的!它现在有效,没有你们,我无法做到。然而!有趣的是,你们所有人都为我建议了选项,但没有(在我看来)最终选项。你们告诉我存储的整数是 3 的 ASCII 码,而不是实际的整数 3。这让我想起了 Character 类中的一个方法 getNumericValue(char)。使用这种方法,我只需从 char 数组中检索整数 3 而无需转换自己。

nextNumber = nextNumber * 10 + Character.getNumericValue(expression[k]);

感谢@howard 将链接编辑到上传的图片中

于 2011-09-29T13:48:50.647 回答