我正在尝试编程,以确保用户输入的no是否为强数,但是我得到的输出为145 = 1! + 4!+ 5!= 145是一个很强的数字
123 = 1! + 2! + 3!= 9不是一个强数
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/folktale/2.0.1/folktale.min.js"></script>
例如,我没有输入145,我希望输入的输出数字很强,但实际输入的数字不是很强
答案 0 :(得分:2)
您没有在fact
循环之间重置while
变量。
只需在循环开始时添加fact = 1;
,或在循环内移动变量声明int fact = 1;
,使其仅存在于其作用域内。
在这个阶段,这可能与您无关,但是我建议您利用这个机会来学习如何使用调试器。以后会有很大帮助。
答案 1 :(得分:0)
在循环内移动int fact = 1;
。这不会重置。
答案 2 :(得分:0)
应该是这样的:
public static void main(String[] args)
{
Scanner s=new Scanner(System.in);
int n=s.nextInt();
int temp=n;
int sum = getStrongNumberSum(n);
if(sum==temp) {
System.out.println("number u have entered is strong");
} else {
System.out.println("no is not strong");
}
}
private static int getStrongNumberSum(int n) {
int sum = 0;
while (n != 0) {
int fact = 1; // main change !!!
int rem = n % 10;
for (int i = 1; i <= rem; i++) {
fact = fact * i;
}
sum = sum + fact;
n = n / 10;
}
return sum;
}