求一个整数的位数,这个数在1,200,000,000之间,并将这个整数的各位上的数字相乘,直到最后是一位数为止。比如输入99,他的整个序列应该是99,81,8,他的persistence是2.
我用随机数获得该整数,可是当执行“将这个整数的各位上的数字相乘”时总是会有溢出,谁能给个代码,谢谢

解决方案 »

  1.   

    public class NumXTest {
    public static void main(String[] args) {
    Random rand = new Random();
    int num = rand.nextInt(200000000);
    System.out.println(num);
    while(true){
    num = result(num);
    if(num < 10){
    System.out.println(num);
    break;
    }
    }
    }

    public static int result(int num){
    int len = String.valueOf(num).length();
    int result = 1;
    for(int i = len ; i > 0 ; i --){
    result = result * (num/len(i));
    num = num%len(i);
    }
    return result;
    }

    public static int len(int len){
    int result =1;
    for(int i = 1 ; i < len ;i ++){
    result = result * 10;
    }
    return result;
    }
    }数字过大的时候  总是会出现零  数字大的时候好像怎么乘都有个零在里面
      

  2.   


    public class Digit {
           public static void main(String[] args) {
            int input = 11336377;
            System.out.println("这个数的长度为:"+getLength(input));
            printMembers(input);
        }
        
        public static int getLength(int input){
            return (input+"").length();
        }
        
        public static void printMembers(int input){
            if(getLength(input)>1){
                int temp = 1;
                int length = getLength(input);
                for(int i= length-1;i>=0;i--){
                    temp = temp*((int)(input/Math.pow(10, i)));
                    input = (int)(input%Math.pow(10, i));
                }
                System.out.print(temp+"  ");
                printMembers(temp);
            }
        }}
      

  3.   

    public class Digit {
    public static void main(String[] args) {
    int input = 123467;
    System.out.println(getLength(input+""));
    System.out.println("number result is " + getNumber(input+""));
    }
     
    public static int getLength(String input){
        return null == input ? 0 : input.length();
    }
     
    public static int getNumber(String input){
    String inputTemp = input;
    int result[] = null ;
    if(!inputTemp.contains("0")){
    result = digui(char2int(input));

    return result[0];
    }

    public static int[] char2int(String str){
    int  inputInt[] = new int[str.length()] ;
    int i = 0 ;
    for(char c : str.toCharArray()){
    inputInt[i] = Integer.parseInt(c+"");
    i ++ ;
    }
    return inputInt;
    }

    public static int[] digui(int[] input){
    int [] inputInt = input;
    int result = 1 ;
    if(inputInt.length > 1){
    for (int i : inputInt) {
    result *= i;
    }
    inputInt = digui(char2int(result+""));
    }
    return inputInt;
    }
    }
    应该差不多了,自己再补充点吧,比如判断里边有“5”,并且有偶数 ,最后相乘的值就直接为0.