有限的阿姆斯特朗号

时间:2017-06-09 08:48:50

标签: java

我想找到具有输入限制的阿姆斯特朗号码。给定的程序没有给出数字153作为阿姆斯特朗号码。提前谢谢!

public class DisplayAmstrong {

public static void main(String[] args) {

    int r=0,i=0,n=0,a=0,b=0;
    System.out.println("Enter the Limit:");
    Scanner ob = new Scanner(System.in);
    int limit=ob.nextInt();
    if(limit<0)
    {
        System.out.println("Negative number!Enter proper value!");
    }
    if(limit==0)
    {
        System.out.println("Please enter greater than zero value!");
    }
    if(limit>0)
    {
        for(i=1;i<limit;i++)
        {
             b=i;
             n=b;
             while(n!=0)
             {

               r=r-r+n%10;
               a=a+(r*r*r);
               n=n/10;

             }
               if(a==b)
               {
                     System.out.println(a);
               }

        }
        System.out.println("Limit finished!");

    }
}
}   

输出是:

输入限制:

200

1

限制完成!

4 个答案:

答案 0 :(得分:0)

您可能希望在启动for循环时将变量a重置为0;)

顺便说一下,你可能想要使用更长的变量名,所以对于那些读你(包括将来你)的人来说,哪个变量对应的东西更容易。

另外,你可以在开始时缩小你的极限测试:你想要一个正数,所以它必须大于0. Aka不低于或等于0

答案 1 :(得分:0)

在while循环之前添加a = 0;。您需要为每a重置i的值。

答案 2 :(得分:0)

for(i=1;i<limit;i++)
    {
         b=i;
         n=b;
         while(n!=0)
         {

           r=r-r+n%10; // And why 'r - r'?
           a=a+(r*r*r);
           n=n/10;

         }
         if(a==b)
         {
             System.out.println(a);
         }
         a = 0;

    }

答案 3 :(得分:0)

这是一个工作计划:

public static void main(String[] args) {
    System.out.println("Enter the Limit:");
    Scanner ob = new Scanner(System.in);
    int limit = ob.nextInt();
    if (limit < 0) {
        System.out.println("Negative number! Enter proper value!");
    } else if (limit == 0) {
        System.out.println("Please enter a number greater than zero!");
    } else {
        for (int i = 1; i < limit; i++) {
            int sum = 0;
            int number = i;
            while (number != 0) {   // While loop to review each digit of the number
                int digit = number - (number / 10) * 10;    // Capturing the last digit
                sum += digit * digit * digit;               // Adding digit^3
                number = number / 10;                       // Dividing number to get the next digit
            }
            if (sum == i) {     // i is an Armstrong number
                System.out.println(i + " is an Armstrong number.");
            }
        }
        System.out.println("Limit finished!");
    }
}

基本上,您会查看您的号码的每个数字,并将数字^ 3与每个其他数字相加^ 3。