将该整数每位的数平方后相加,得到一个新的数,如此循环下去,最后能得到1。

1、题目:将该整数每位的数平方后相加,得到一个新的数,如此循环下去,最后能得到1。

例如:

整数7
1
2
3
4
5
7^2=49
4^2+9^2=97
9^2+7^2=130
1^2+3^2+0^2=10
1^2+0^2=1

2、代码:
package pingfang;

import java.util.ArrayList;

/**
 * Created by Administrator on 2015/9/29 0029.
 */
public class Test {
    public static void main(String[] args) {
        String a="19";
        chuli(a);
    }

    private static void chuli(String a) {
        int sum=0;
        String temp=a;
        ArrayList<String> list=new ArrayList<String>();
        while(true){
            sum=0;
            list.add(temp);
            for(int i=0;i<temp.length();i++) {
                sum += (int) Math.pow(temp.charAt(i) - '0', 2);
            }



            if (sum == 1) {
                System.out.print("ac");
                break;
            }
            temp=Integer.toString(sum);
            for(String s:list) {
                if (s.equals(temp)) {
                    System.out.print("error");
                    return;
                }
            }
        }
    }
}
3、主要注意的几点:
(1)两个终止条件:循环多次后,最后结果为1;循环多次后,结果出现重复,那么在第一次出现重复时就终止
(2)当一个数据做了每一位平方和后得到sum,付给temp,重新判断是否出现过或者为1
(3)用list保存每一次操作后得到的结果

你可能感兴趣的:(String,Class)