我的java程序找到阿姆斯特朗号是行不通的

时间:2013-08-22 09:58:26

标签: java

这是我的计划:

import java.io.*;

public class armstrongno {

    int num;
    int sum;
    int cube;
    int dig;
    int temp;

    public void method() throws IOException {
        dig = 0;
        cube = 0;
        sum = 0;
        num = 0;
        temp = 0;
        BufferedReader obj = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter number");
        num = Integer.parseInt(obj.readLine());
        temp = num;
        while (temp == 0) {
            dig = temp % 10;
            cube = dig * dig * dig;
            sum = sum + cube;
            temp = temp / 10;
        }
        if (sum == num) {
            System.out.println("Armstrong number");
        } else {
            System.out.println("Not an Armstrong number");
        }
    }
}

2 个答案:

答案 0 :(得分:2)

while(temp==0)// this will execute when temp=0 else never execute. 
{
    dig=temp%10;
    cube=dig*dig*dig;
    sum=sum+cube;
    temp=temp/10;
} 

所以永远不要进入if(sum==num)。所以你得到的是else部分。

按如下方式更改您的代码。

while (temp > 0) {
        dig = temp % 10;
        cube = dig * dig * dig;
        sum = sum + cube;
        temp = temp / 10;
    }

答案 1 :(得分:1)

while(temp==0)

如果temp不为零,则永远不会执行。

您可能想要这样做:

while(temp > 0)


有时可以挽救生命的提示:使用调试器。