みなさんご機嫌いかがでしょうか。今日は入力した整数の各桁の和を計算するために、sumDigitsを使ったコードを紹介します。まずは簡単にsumDigitについて紹介します。
Contents
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)となります。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import java.util.Scanner; //ユーザー入力をしたいので、Scannerをインポート public class Test { public static void main(String[] args) { Scanner input = new Scanner(System.in); //ユーザー入力 System.out.print("自然数を入力してください: "); int n = input.nextInt(); System.out.println("自然数の各桁の和は: " + sumDigits(n)); //sumDigits:負でないint nが与えられた場合、その桁の合計を再帰的に返す。 } public static int sumDigits(int n) { int sum = 0; //自然数の各桁の和を計算 while (n != 0) { //sumDigitsは単独ではloopしないので、while loopを使う。 sum += n % 10; //再右端の桁を得るために%10を利用する。 n /= 10; //再右端の桁を取り除くためにn/=10を利用する。 } return sum;//合計を返す } } |
アウトプット
自然数を入力してください: 1786453
自然数の各桁の和は: 34