求一个整数的各位累加和?
比如:152->1+5+2->8
-777->-7+7+7=7
思路:
(1)所以要考虑这个数是 整数和负数的情况,分开处理这两种情况。
(2)如果是正整数的话,每一次对这个数num求mod 10得到末尾的数m=num%10, m=num%10 然后再去尾数num=num/10,然后每次加m
(3)如果是负数的话,注意m=num%10,得到并不是最末尾数,而是末尾数的负数,所以加的时候应该加-m,除了一种情况,那就是到了首位数
的时候,首位数本就是一个负数,所以直接加上m就行了.
实现代码(Java)如下:
public class TestIterate3 { public static void main(String[] args) { System.out.println("-777 : "+getSum(-777)); System.out.println("777 : "+getSum(777)); System.out.println("0 : "+getSum(0)); } /** * 求一个整数的各位数累加和 * 考虑: * 152=>1+5+2=8 * -777=>-7+7+7=7 * */ public static int getSum(int num) { int sum = 0; int m = 0; // if (num >= 0) { while (num != 0) { // 求末尾数m m = num % 10; // 然后去除尾数 num = num / 10; sum += m; } } else { while (num != 0) { m = num % 10; num = num / 10; // if (num == 0) { sum += m; } else { sum += -m; } } } return sum; } }