猿问

android中的乘法持久性程序

你好,我有这个问题来自 codewars。


“写一个函数,persistence,它接受一个正参数 num 并返回它的乘法 persistence,也就是你必须将 num 中的数字相乘直到达到一位数的次数。”


我在应用该方法时遇到了一些麻烦。这是我目前所拥有的。


 public static int digital_root(int n) {

    // ...


    char[] characters = Integer.toString(n).toCharArray();

    int sum = 0;

    String number=Integer.toString(n);

    int lengNum=number.length();

    String firstChar=number.substring(0,1);

    String secondChar=number.substring(1,2);


    for(int i=0;i<=lengNum;i++){

        int a;

        number.substring(i,i+1);

        number.substring(i+1,i+2);

    }


    for (char character : characters) {

        int x = Integer.parseInt(Character.toString(character));

        sum += x;

    }

    if (sum > 10) {

        return digital_root(sum);

    } else {

        return sum;

    }

}

因为我不知道 n 的长度,所以它可能是 100000000


我知道这是关键


for(int i=0;i<=lengNum;i++){

    int a;

    number.substring(i,i+1);

    number.substring(i+1,i+2);

}

但是我的大问题来了,我可以将 的值存储number.substring(i,i+1);

到一个变量中Int a = number.substring(i,i+1);

,然后用变量做同样的事情Int b=number.substring(i+1,i+2);


然后返回 a*b 但是怎么做a*b*c*d*........


然后我将不得不在for循环中做


if(number<10){

 return number;

}else{

   //continue multiplying

}

我有以下错误:


    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.franco.mac.any/com.franco.mac.any.MainActivity}: java.lang.StringIndexOutOfBoundsException: length=2; index=3


千万里不及你
浏览 108回答 1
1回答

守候你守候我

你只是想要这样的东西吗?如果你想让它处理非常大的数字,你可以使用 BigInteger。public static int persistence(int num) {&nbsp; &nbsp; int numberOfTimes = 0;&nbsp; &nbsp; int temp;&nbsp; &nbsp; while (num > 9) {&nbsp; &nbsp; &nbsp; &nbsp; temp = 1;&nbsp; &nbsp; &nbsp; &nbsp; while (num > 0) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; temp *= num % 10;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; num /= 10;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; num = temp;&nbsp; &nbsp; &nbsp; &nbsp; numberOfTimes++;&nbsp; &nbsp; }&nbsp; &nbsp; return numberOfTimes;}
随时随地看视频慕课网APP

相关分类

Java
我要回答