public static int sumDigits(int number) {
if(number < 10) {
return -1;
}
int sum = 0;
int remainder = 0;
while(number > 0) {
remainder = number % 10;
sum = sum + remainder;
number = number / 10;
}
return remainder;
}
我是Java编程的非常初学者,目前在while循环逻辑中。我在理解此代码时遇到困难。对于上下文,此代码将任何给定整数的数字相加,例如125将给出8的输出,因为1 + 2 + 5 = 8。
我不明白那一面的部分,比如说数字是125,由于125%10是5,所以余数应该是5,因为0 + 5,所以总和应该是5,因为它是int,所以数字应该是12。 Sum如何给出1 + 2 + 5?
一些帮助将不胜感激!谢谢。
这些评论提供了更直接的答案。但是随着您的进步,您可能需要注意一些关于Java的事情,您可以使用+=
运算符,/=
运算符,并且可以查找和使用任何标准Java异常类或创建自己的异常类(通过继承自基类Exception),您将在后面学习。但这是优于C的优势之一,人们通常使用-1
或< 0
(用常数命名或不命名)来表示错误。异常不那么模棱两可,如果未被捕获(例如默认情况下),则抛出堆栈跟踪以帮助诊断-例如找出发生故障的位置。最后,通常在编码中,您要尽可能避免使用“幻数”,并将其与命名常量进行比较,以识别任何给定数字的含义,以减少混乱并减少反向工程代码的使用时间,并长期维护代码运行。
public static int sumDigits(int number) throws IllegalArgumentException
{
final static int MIN_VALUE = 0;
if (number < MIN_VALUE)
throw new IllegalArgumentException("Number must be >= " + MIN_VALUE);
int sum = 0;
int remainder = 0;
while (number > 0) {
remainder = number % 10;
sum += remainder;
number /= 10;
}
return remainder;
}