【问题标题】:What does '0' do in Java?Java中的'0'有什么作用?
【发布时间】:2016-03-28 08:52:33
【问题描述】:

我正在尝试查找数字中所有数字的乘积,我已将其存储为字符串(由于 int 和 long 长度限制)。

所以这个数字是这样的:

final String number = "1234567898765432123......etc"

如果我使用此代码,它可以工作:

product *= number.charAt(i + j) - '0';

如果我删除 '0' 则不会。

我从另一个在线资源获得此代码。有人能解释一下“0”的作用吗?

【问题讨论】:

  • 那些 ascii 字符可以转换为整数。这些是 ascii 表上的索引,所以检查一下,然后再考虑一下,我想你会明白的;)

标签: java


【解决方案1】:

Ascii 字符实际上是数字。而0 .. 9 数字是从十进制 48(0x30 十六进制)开始的数字。

'0' is 48
'1' is 49
...
'9' is 57

所以要得到任何字符数字的值,你可以去掉'0',即48。

'1' - '0' => 1
 49 -  48 => 1

如果您不删除“0”(48),总和将超过48 * numberOfDigits

查看ascii table 以查找其中的数字。

注意'0' 是字符0,而不是包含字符'0' 的字符串"0"

【讨论】:

    【解决方案2】:

    让我们检查一下ASCII图表

    你可以看到'0' -> '9'的Dec值

    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是数字字符

    【讨论】:

      【解决方案3】:

      number.charAt(i + j) 中删除0 将以数字形式(或integer)为您提供相同的字符。

      当您在任何表达式中使用字符时,该字符将被其ASCII 值替换。

      '0'(字符 0)的 ASCII 值为 48 '1'(字符 0)的 ASCII 值为 49

      现在,如果 number.charAt(i + j)'1',那么在您的表达式中,'1' 会被 49 替换,'0' 会被 48 替换,结果会是 1(integer)。

      【讨论】:

        【解决方案4】:

        字符和整数实际上是一回事,因为每个字符都有一个代码(ASCII,但在某些情况下还有 Unicode)。

        通过从字符串中的任何数字中减去'0',您可以得到该整数的实际值。

        '0' > 48
        48 - 48 = 0 (integer value)
        

        这同样适用于所有其他整数。您可以对其他字符执行类似的操作,例如 letter - 'A',根据其在字母表中的位置为每个字母分配一个数字。

        【讨论】:

          【解决方案5】:

          '0' 是零的 char 值。

          当您编写字符串时,您正在编写一个“char”数据类型数组,编译器会将其转换为 ASCII 值(具有相应的十进制数值)。

          当你打电话时

          number.charAt(i + j);
          

          您实际上是在生成一个 ASCII 值。

          http://www.asciitable.com/

          '0'的ASCII值是:

          48

          '1':

          49

          。 . .

          '9':

          57

          所以当你打电话时

          number.charAt(i + j) - '0';
          

          您实际上是在运行 ASCII 值减去 48 的运算,这是它作为整数的实际值。

          例如

          ('9' - '0') = (57 - 48) = (9 - 0) = 9

          【讨论】:

            【解决方案6】:

            字符存储为数字。 例如,'0' 等于 ASCII 中的 48。因此,如果要将字符转换为整数,则必须删除 '0' (或删除 48 会以相同的方式工作):

            product *= number.charAt(i + j) - 48;
            

            更多信息:http://www.asciitable.com

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-11-12
              • 2016-02-19
              • 2023-03-28
              • 2016-11-21
              • 2014-05-05
              • 1970-01-01
              • 2022-12-15
              • 2012-04-08
              相关资源
              最近更新 更多