Java 加法持久性算法
我需要一些指导,因为我对编码非常陌生 我正在写一个程序,它可以找到,显示每个方法的总和 如果您不知道什么是加性持久性,下面是一些说明: 加法持久性是整数位数和的一个属性。找到数字的和,然后对和执行数字求和,重复直到达到一个整数。这样的循环数就是该整数的加性持久性。考虑下面的例子: 起始整数是1234 其数字总和1+2+3+4=10 整数现在是10 其数字之和为1+0=1 整数是1。当数值达到一位数时,我们就完成了。最后一个整数是加法根。 我不知道这是我的语法还是什么,但我真的认为我自己解决了这个算法。但是,当我输入一个数字时,没有输出。任何帮助或指点都将不胜感激。我太迷路了Java 加法持久性算法,java,Java,我需要一些指导,因为我对编码非常陌生 我正在写一个程序,它可以找到,显示每个方法的总和 如果您不知道什么是加性持久性,下面是一些说明: 加法持久性是整数位数和的一个属性。找到数字的和,然后对和执行数字求和,重复直到达到一个整数。这样的循环数就是该整数的加性持久性。考虑下面的例子: 起始整数是1234 其数字总和1+2+3+4=10 整数现在是10 其数字之和为1+0=1 整数是1。当数值达到一位数时,我们就完成了。最后一个整数是加法根。 我不知道这是我的语法还是什么,但我真的认为我自己解决了这个
为什么代码没有显示任何结果 您可以将字符串中的每个字符转换为int并求和,而不是立即将字符串转换为整数。如果结果值不小于10,请再次执行。下面是一个递归示例:
private int additivePersistence(String num)
{
if(num.length() == 1) //If the number is a single digit, we're done
return Integer.parseInt(num);
int sum = 0;
for(int i = 0; i < num.length(); i++)
sum += (num.charAt(i) - '0'); //Gets integer value of char, adds it to sum
return additivePersistence(Integer.toString(sum));
}
希望有帮助 您可以包括try-catch块,而不仅仅是编写代码。您的代码当前不处理异常。如果用户输入字符串而不是数字,它将抛出NumberFormatException。因此,您可以将catch block用于:
try {
//your code above
} catch(NumberFormatException nfe)
{
System.out.println("Number entered is not numeric."+ nfe.getMessage());
}
也可考虑使用:
System.exit(0); after if statement so that program stops after calculation.
你的while循环,while num3>0-num3从零开始,所以循环永远不会进入。非常感谢,我已经摆脱了num3。而num1>0{num2=num1%10;result=result+num2;num1=num1/10;count++;
System.exit(0); after if statement so that program stops after calculation.