书中的示例要求用户输入任何正数。然后程序将分别添加各个数字并打印总数。例如,如果用户输入数字7512,则程序设计为添加7 + 5 + 1 + 2,然后打印总数。
我已经写出了我理解代码如何工作的方式。它是否正确?我对每个步骤的循环是否正确,或者我是否缺少任何计算?在7%10中没有剩余时,第4次循环会发生什么?
1st run of loop ... sum = sum + 7512 % 10 which is equal to 2
n = 7512 / 10 which which equals to 751
2nd run of loop ... sum = 2 + 751 % 10 which is equal to 1
n = 751 / 10 which is equal to 75
3rd run of loop ... sum = 3 + 75 % 10 which is equal to 5
n = 75 / 10 which is equal to 7
4th run of loop ... sum = 8 + 7 % 10 <------?
import acm.program.*;
public class DigitSum extends ConsoleProgram{
public void run() {
println("This program will add the integers in the number you enter.");
int n = readInt("Enter a positive integer: ");
int sum = 0;
while (n > 0) {
sum += n % 10;
n /= 10;
}
println("The sum of the digits is" + sum + ".");
}
}
答案 0 :(得分:6)
操作7 % 10
的结果是7,将7除以10时的余数。循环的最后一次迭代是将7添加到先前值。循环中的下一个除法步骤(n /= 10;
)将n取为0,这就是循环的结束。
答案 1 :(得分:1)
%
与/
%
运算符用于模数,而不是除法...这意味着运算的结果不是除法,而是获得除法的其余部分,如:
7512 % 10 => 2
751 % 10 => 1
75 % 10 => 5
7 % 10 => 7
在处理数字操作时,这种逻辑经常被使用。
答案 2 :(得分:0)
答案 3 :(得分:0)
在7%10
之后,您获得7
,并将其添加到您的结果中。
7/10
将导致0
,因此您的循环结束,您的总和现在已添加了您想要的内容。