由于输入的数字1<=n<=10的100次方,所以肯定不能直接用int,或者long类型来存储输入的数字,而是要采取字符串的形式进行存储
由于:
10的一次方:10 (后面1个0)
10的2次方:100 (后面2个0)
10的3次方:1000 (后面3个0)
10的4次方:10000 (后面4个0)
.
10的100次方 :(1后面有100个0)
所以10的100次方一共有101个数
这101个数,把每一位加起来用一个int型整数进行存储绰绰有余,
此时就可以进行树根的计算了。
代码如下:

import java.util.Scanner;

/**
 * @version 1.0
 * @Author XuHeng
 * @Date 2021/5/18 0:10
 */

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while (scanner.hasNext()){
            String  string=scanner.nextLine();
            char[] arr=string.toCharArray();
            int sum=0;
            for (int i = 0; i < string.length() ; i++) {
                sum+=(arr[i]-'0');//计算字符串的各位之和
            }
            System.out.println(numRoot(sum));
        }
    }
    private static int numRoot(int n){
        int sum=0;
        while (n>0){//判断n是否是一个 一位数
            //若n不是一位数,则计算它的各位之和
            int n1=n%10;
            sum+=n1;
            n/=10;
        }
        if (sum/10>0){//判断各位之和是否是一个 个位数
            //若不是,继续求它的树根
           return numRoot(sum);
        }
        //否则结束计算
        return sum;
    }
}