この本の例では、ユーザーに正の数を入力するよう求めています。次に、プログラムは個々の数字を個別に追加し、合計を出力します。たとえば、ユーザーが数字 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 + ".");
}
}