给出一个非负整数 num,反复的将所有位上的数字相加,直到得到一个一位的整数。

 1 package digitAddTogither;
 2 
 3 /**
 4  * Created by ZKY on 2017-08-15 01:00.
 5  * 给出一个非负整数 num,反复的将所有位上的数字相加,直到得到一个一位的整数。
 6  * 样例
 7  * 给出 num = 38。
 8  * 相加的过程如下:3 + 8 = 11,
 9  * 1 + 1 = 2。
10  * 因为 2 只剩下一个数字,所以返回 2。
11  */
12 public class DoMain
13 {
14     /**
15      * Get a number's all digit's sum.
16      * @param num
17      * @return
18      */
19     public int geSum(int num)
20     {
21         int sum = 0;
22         while(num >0)
23         {
24             int temp = num %10;
25             num /= 10;
26             sum+=temp;
27         }
28          return sum;
29     }
30 
31     /**
32      * 获取一个数的各位和,并判断和是否满足个位数,满足就返回结果。否者继续。
33      * @param num
34      * @return
35      */
36     public int getAdigit(int num)
37     {
38         while(num >=10)
39         {
40             num = geSum(num);
41         }
42          return num;
43     }
44 
45 
46 
47     public static void main(String[] args)
48     {
49         DoMain doMain = new DoMain();
50         int adigit = doMain.getAdigit(38);
51         System.out.println(doMain.getAdigit(45));
52         System.out.println(doMain.getAdigit(23));
53         System.out.println(doMain.getAdigit(69));
54         System.out.println(doMain.getAdigit(123));
55         System.out.println(doMain.getAdigit(6623));
56     }
57 }

一开始想到的是递归,但是想了半天写出来的程序返回并不正确。

换一种思路就很快写出了这个。

原文地址:https://www.cnblogs.com/zkycode/p/7362360.html