比如说生日:"19900101",怎么将其计算成为最后的3?就是遍历相加,得数不是一位时,再相加

解决方案 »

  1.   

    public class Test {
        
        public static void main(String[] args) {
            System.out.println(toOneBit(19900101));
        }
        
        // 0 和负数均返回 0
        private static int toOneBit(int num) {
            int sum = 0;
            while(num > 0) {
                sum += num % 10;
                num /= 10;
            }
            if(sum < 10) {
                return sum;
            }
            return toOneBit(sum);
        }
    }
      

  2.   

    public class Count { public int add(String num)
    {
    char [] nums=num.toCharArray();
    int count=0;
    for(int i=0;i<nums.length;i++)
    {
    int a=Integer.parseInt(nums[i]+"");
    count=count+a;
    }
       if(count>10)
       {
       count=this.add(count+"");
       }
     return count;
    }
    public static void main(String[] args) {

    Count test=new Count();
    int count=test.add("19900101");
    System.out.println(count+"");
    }

    }
      

  3.   

    /**
     * 类说明
     * 
     * @author shellfeng E-mail:[email protected]
     * @version 1.0
     * 
     */
    public class FormatStringToNumber {
        private String s_formatString = "19900101";    private static int s_result = 0;    public void formatTwoNumber() {
            String s_tempString = String.valueOf(s_result);
            if (s_tempString.length() == 2) {
                s_result = Integer.parseInt(s_tempString.substring(0,1)) + Integer.parseInt(s_tempString.substring(1,2));
            }
        }    public void formatString() {
            int s_lenght = s_formatString.length();
            for (int i = 0; i < s_lenght; i++) {
                String s_firstNumber = s_formatString.substring(i,i+1);
                s_result = s_result + Integer.parseInt(s_firstNumber);
                formatTwoNumber();
            }
        }    public static void main(String[] args) {
            FormatStringToNumber s_format = new FormatStringToNumber();
            s_format.formatString();
            System.out.println("结果为:" + s_result);
        }
    }结果为:3
      

  4.   

    引用 2 楼 bao110908 的回复:public class Test {
        
        public static void main(String[] args) {
            System.out.println(toOneBit(19900101));
        }
        
        // 0 和负数均返回 0
        private static int toOneBit(int num) {
            int sum = 0;
            while(num > 0) {
                sum += num % 10;
                num /= 10;
            }
            if(sum < 10) {
                return sum;
            }
            return toOneBit(sum);
        }
    }经典,收藏。
      

  5.   


    public class Test { public static void main(String[] args) {
    String temp = "19900101";
    try {
    System.out.println(operate(temp));
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    public static String operate(String src) throws Exception {
    int length = src.length();
    if(length <= 1) 
    return src;
    else {
    long result = 0;
    for(int i = 0; i < length; i++) {
    char temp = src.charAt(i);
    if(Character.isDigit(temp)) {
    result += (temp - 48);
    } else {
    throw new Exception("不是数字: " + temp);
    }
    }
    return operate("" + result);
    }
    }
    }