Function: 判断一个数字是否为快乐数字 19 就是快乐数字 11就不是快乐数字 19 1 1+9 9=82 8 8+2 2=68 6 6+8 8=100 1 1+0 0+0 0=1 11 1 1+1 1=2 2 2=4 4 4=16 1 1+6 6=37 3 3+7 7=58 5 5+8 8=89 8 8+9 9=145 1 1+4 4+5 5=42 4 4+2 2=20 2 2+0 0=2 这里结果 1 1+1 1=2 和 2 2+0 0=2 重复,所以不是快乐数字 @author crossoverJie Date: 04/01/2018 14:12 @sin
| 29 | * @since JDK 1.8 |
| 30 | */ |
| 31 | public class HappyNum { |
| 32 | |
| 33 | /** |
| 34 | * 判断一个数字是否为快乐数字 |
| 35 | * @param number |
| 36 | * @return |
| 37 | */ |
| 38 | public boolean isHappy(int number) { |
| 39 | Set<Integer> set = new HashSet<>(30); |
| 40 | while (number != 1) { |
| 41 | int sum = 0; |
| 42 | while (number > 0) { |
| 43 | //计算当前值的每位数的平方 相加的和 在放入set中,如果存在相同的就认为不是 happy数字 |
| 44 | sum += (number % 10) * (number % 10); |
| 45 | number = number / 10; |
| 46 | } |
| 47 | if (set.contains(sum)) { |
| 48 | return false; |
| 49 | } else { |
| 50 | set.add(sum); |
| 51 | } |
| 52 | number = sum; |
| 53 | } |
| 54 | return true; |
| 55 | } |
| 56 | |
| 57 | |
| 58 | public static void main(String[] args) { |
| 59 | int num = 345; |
| 60 | int i = num % 10; |
| 61 | int i1 = num / 10; |
| 62 | int i2 = i1 / 10; |
| 63 | System.out.println(i); |
| 64 | System.out.println(i1); |
| 65 | System.out.println(i2); |
| 66 | } |
| 67 | } |
nothing calls this directly
no outgoing calls
no test coverage detected