**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
2天前关闭。
Improve this question
看第32行,假设我给程序的值是153,这确实是阿姆斯特朗数,那么第32行的sum的值一定是153,但不管输入是什么,它总是显示0。
import java.util.*;
import java.lang.*;
public class Main
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
{
System.out.println("For which condition you want to check the condition!");
int check = input.nextInt();
isArmstrong(check);
}
}
static void isArmstrong(int num)
{
int sum = 0;
int count = 0;
int demo = num;
while (demo > 0) {
int firstPart = demo / 10;
int lastPart = demo - (firstPart * 10);
count++;
demo = firstPart;
}
System.out.println("total number of digits in the provided number are"+count);
while (demo > 0) {
int firstPart = demo / 10;
int lastPart = demo - (firstPart * 10);
sum = sum + (int)Math.pow(lastPart,count);
demo = firstPart;
}
System.out.println("value of sum is "+sum);
if(sum==num)
{
System.out.println(num+" is an armstrong number");
}
else {
System.out.println(num+" is not an armstrong number");
}
}
}
我想知道我能做些什么来确保,代码中sum
的值,能显示出,它实际上是什么,才能成为阿姆斯特朗数。
3条答案
按热度按时间w8biq8rn1#
您需要在计算数字后将
num
重新分配给demo
。hvvq6cgz2#
在查找数字位数时,您正在修改复制的源值(demo)。因此,在开始验证之前(在第二个while循环之前),您需要再次将源值重新分配给demo。
因此,在第二个while循环之前添加下面这行代码。
希望这有帮助!
efzxgjgh3#
首先,问题是在计算完位数之后,您没有将
num
重新分配给demo
。但这里有一个更简单的方法来做到这一点。
印刷品
n > 0
执行以下操作时循环:%
运算符获取最后一位数字10
以暴露下一数字。