Java問題:入力した整数の各桁の和を計算

みなさんご機嫌いかがでしょうか。今日は入力した整数の各桁の和を計算するために、sumDigitsを使ったコードを紹介します。まずは簡単にsumDigitについて紹介します。

sumDigitsとは?

sumDigits・・・負でないint nが与えられた場合、その桁の合計を再帰的に返すもの

sumDigitsの例

 

例1.sumDigits(125)⇒1+2+5 ⇒8
例2.sumDigits(48)⇒ 4 + 8 ⇒12

例1のsumDigits(125)の場合、mod10で最右端(1の位)の桁が得られ(125%10=5)、10を除算すると最右端の桁が除かれます(125/10=12)。

あとはこれをwhile loopを使って処理を繰り返し続けるだけですね。

while loop・・・ある条件が真である間、処理を繰り返し続けること。本問ではsumdigitの数字(n)が0でない間、処理を続けます。

次のループでは12%10=2, 12/10 =1と計算し、その次のループでは1%10=1, 1/10=0となり、n=0となることからループ終了です。

黒の太字で記した5+2+1 = 8が本問で導きたい答え(下記コードでのsum)となります。

ソースコード

 

アウトプット

 
自然数を入力してください: 1786453
自然数の各桁の和は: 34