Sum of Digits of a Number in Java

2025 年 5 月 6 日 | 阅读 7 分钟

在本节中,我们将创建 Java 程序查找 Java 中数字的各位之和。要查找数字的各位之和,我们必须熟悉Java 循环运算符

Sum of Digits of a Number in Java

查找 Java 中数字各位之和的步骤

将任何整数作为输入。之后,我们分别使用模数和除法运算来查找数字的各位之和并将其作为输出。让我们看看这些步骤。

  1. 读取或初始化一个整数N
  2. 声明一个变量(sum)来存储数字的总和,并将其初始化为0
  3. 使用模运算符(%)找到余数。它给出数字 (N) 的最后一位数字。
  4. 将最后一位数字加到变量 sum 中。
  5. 将数字 (N) 除以 10。它会移除数字的最后一位数字。
  6. 重复上述步骤(3 到 5),直到数字 (N) 变为 0。

让我们从数学上理解上述步骤,并找出数字的各位之和。

假设我们要找出数字 (N) 674 的各位之和。

第一次迭代

674 % 10 = 4

Sum = 0 + 4 = 4

674 / 10 = 67

第二次迭代

67 % 10 = 7

Sum = 4 + 7 = 11

67 / 10 = 6

第三次迭代

6 % 10 = 6

Sum = 11 + 6 = 17

6 / 10 = 0

现在数字 (N) 已经变为 0。因此,我们将不再处理它。因此,我们得到 674 的各位之和17

让我们在 Java 程序中实现上述步骤。

Java 程序查找数字的各位之和

有以下几种方法可以找到数字的各位之和:

  • 使用 While 循环
  • 使用 for 循环
  • 使用函数
  • 使用递归

使用 While 循环

使用 while 循环查找数字各位之和是最简单的方法。让我们分解一下这些步骤:

初始化变量

number: 存储用户输入。

digit: 存储数字的最后一位。

sum: 累积各位数字的和。

循环直到数字变为 0

  • 使用模运算符(number % 10)找到最后一位数字。
  • 将最后一位数字加到 sum。
  • 通过将数字除以 10(number / 10)来从 number 中移除最后一位数字。

打印结果。

SumOfDigitExample1.java

输出

Enter the number: 876
Sum of Digits: 21

使用 for 循环

这种方法使用 for 循环来实现相同的结果,在某些情况下可能更简洁。

初始化变量

number: 存储用户输入。

sum: 累积各位数字的和。

循环直到数字变为 0

在每次迭代中,将最后一位数字加到 sum,并从 number 中移除最后一位数字。

打印结果。

SumOfDigitsExample2.java

输出

Enter a number: 3456788
Sum of digits: 41

使用函数

将逻辑封装在函数中可以提高代码的可重用性和清晰度。

定义函数

findSum() 函数接受一个整数并返回其各位数字之和。

在函数中使用 While 循环

函数内的逻辑类似于 while 循环方法。

从 main() 方法调用该函数。

SumOfDigitsExample3.java

输出

The sum of digits: 26

在下面的程序中,我们减少了代码行数,并在 for 循环中实现了这些步骤。

SumOfDigitsExample4.java

输出

The sum of digits: 35

使用递归

递归提供了一种优雅的方式来解决这个问题,方法是将问题反复分解为更小的子问题。

定义递归函数

函数调用自身,传入一个缩减后的数字,直到达到基本情况(number == 0)。

基本情况和递归步骤

基本情况: 当数字为 0 时,返回 0。

递归步骤: 将最后一位数字加到具有剩余数字的递归调用的结果中。

这是此方法的代码:

SumOfDigitsExample5.java

输出

The sum of digits: 28

使用带有实例变量的递归

此递归方法的变体使用实例变量来存储总和。

定义带有实例变量的类

定义一个带有实例变量 sum 的类。

递归函数

函数更新实例变量 sum,并调用自身,直到数字变为 0。

SumOfDigitsExample6.java

输出

Enter a number: 983451
The sum of digits: 30

结论

每种方法都有其优点:

  • While 循环: 简单直接,适合初学者。
  • For 循环: 更简洁,对于简单的逻辑可能更受欢迎。
  • 函数: 增强了代码的模块化和可重用性。
  • 递归: 优雅,展示了不同的编程范式,适用于可以分解为相似子问题的问题。
  • 带有实例变量的递归: 当在实例上下文中封装逻辑时很有用。

Java 中数字的各位之和选择题

1. 以下代码片段的输出是什么?

  1. 10
  2. 15
  3. 20
  4. 25

答案:D)

解释: 数字 5 + 4 + 3 + 2 + 1 的总和是 15。


2. 在 Java 中,可以使用哪种方法将数字转换为字符串,以帮助计算其各位之和?

  1. Integer.toString()
  2. String.valueOf()
  3. String.toNumber()
  4. A 和 B 均可

答案:D)

解释: Integer.toString() 和 String.valueOf() 都可以将整数转换为字符串。


3. 在 Java 中,如何处理负数的各位之和?

  1. 对数字使用 Math.abs()。
  2. 忽略负号。
  3. 直接对各位数字求和。
  4. 使用 Integer.signum() 方法。

答案:A)

解释: 使用 Math.abs() 可确保在处理其各位数字之前数字为正。


4. 在 Java 中,用于存储大整数的各位之和的首选数据类型是什么?

  1. int
  2. long
  3. float
  4. double

答案:B)

解释: 使用 long 可以容纳更大的总和而不会溢出。


5. 对整数的最大值(Integer.MAX_VALUE)的各位数字求和的结果将是什么?

  1. 10
  2. 36
  3. 46
  4. 56

答案:B)

解释: 2147483647 的各位数字之和为 2+1+4+7+4+8+3+6+4+7 = 46。