我想找到具有输入限制的阿姆斯特朗号码。给定的程序没有给出数字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
限制完成!
答案 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。