java 为什么if条件没有得到输出?[关闭]

jslywgbw  于 2023-05-15  发布在  Java
关注(0)|答案(2)|浏览(136)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

昨天关门了。
Improve this question

import java.util.*;
public class armstrongNumber {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc=new Scanner(System.in);
        System.out.println("enter no of digits");
        int d=sc.nextInt();
        System.out.println("enter NUmber");
        int num=sc.nextInt();int s;int  res=0;
        while(num>0)
        {
            s=num%10;
            res=res+s*s*s;
            num=num/10; 
        }
        
        System.out.println(res);
        if(res==num)
                {
            System.out.println("armstrong Number");
        }
        else
        {
            System.out.println("not armstrong Number");
        }
    }
    
}

enter no of digits
3
enter NUmber
153
153
not armstrong Number
6l7fqoea

6l7fqoea1#

while循环修改用户输入的数字:

while(num>0)
{
    s=num%10;
    res=res+s*s*s;
    num=num/10; 
}

在循环结束时,num为零,不能与res相同。
您的算法需要num的临时副本:

int temp = num;
while (temp > 0) {
    s = temp % 10;
    res = res + s * s * s;
    temp = temp / 10; 
}

注意,Java有复合赋值运算符,你可以在这里使用:

int temp = num;
while (temp > 0) {
    s = temp % 10;
    res += s * s * s;
    temp /= 10; 
}
mpgws1up

mpgws1up2#

原因是您正在检查res == num。但是在while循环中,您还执行num = num / 10。所以num的值一直在变化。
要纠正它,在进入while循环之前,请将num的值存储到一个临时变量中,并在while循环中使用它。
示例代码段:

int temp = num;
while(temp>0)
{
    s=temp%10;
    res=res+s*s*s;
    temp=temp/10; 
}

if(res==num)
{
    System.out.println("armstrong Number");
}
else
{
    System.out.println("not armstrong Number");
}

相关问题