【问题标题】:What is the purpose of arr[i] - '0' in the following code snippet? [duplicate]以下代码片段中 arr[i] - '0' 的用途是什么? [复制]
【发布时间】:2021-02-15 11:54:24
【问题描述】:

这是我们老师给我们的代码,当我问为什么我们从 arr[i] 中减去“0”时,她只是说它用于排除任何不是数字的东西。谁能解释一下它是如何工作的?

//program to print the sum of all the digits in a string
//
import java.io.IOException;
class CSumOfDigit
{
    public static void main(String[] args) throws IOException {
        String str="67281";
        char arr[]=str.toCharArray();
        long sum=0;
        for(int i=0;i<arr.length; i++){
           sum=sum+(arr[i]-'0');
        }
        System.out.println("Sum of digits is:"+sum);
     }
}

【问题讨论】:

  • 获得与int sum = str.chars().sum() - '0' * str.length();相同结果的详细方法

标签: java arrays string


【解决方案1】:

它不会“排除任何不是数字的东西。”

它将数字字符的数值('0'、'1'、...、'9')转换为对应的int 值(0、1、...、9)。

char '0' 的数值是 48,所以如果你从 '0' 中减去 '0' 你会得到 48 - 48 == 0。

char '1' 的数值是 49,所以如果你从 '1' 中减去 '0' 你会得到 49 - 48 == 1。

等等……

这将导致计算输入 String 表示的数字的数字总和。如果输入 String 仅包含数字,它只会产生有意义的结果。

【讨论】:

    【解决方案2】:

    你有String str="67281";,即String,你不能对String进行正常的数学运算。

    比您将 String 转换为 char 的数组。您可以使用char 进行数学运算,但结果不会是您所期望的。在 Java 中,字符由数字表示(查找 ASCII 表)。

    '0' 是 48,'1' 是 49,等等。

    通过从char 中减去“0”(48),您将得到该数字的实际数值。

    【讨论】:

    • 谢谢,祝你有美好的一天:)
    猜你喜欢
    • 2021-07-29
    • 2015-06-30
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2021-01-02
    • 2021-02-18
    • 2020-02-14
    • 1970-01-01
    相关资源
    最近更新 更多