给出一个非负整数 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 }
一开始想到的是递归,但是想了半天写出来的程序返回并不正确。
换一种思路就很快写出了这个。