需要使用这三种方法打印s
和l
之间的所有特殊数字。但是,我的程序只是打印其他内容。找不到我做错了什么。任何帮助将不胜感激:)
我试过用或不带"这个"来称呼fact
。
static int fact(int num)
{
int fac = 1;
for(int i=1; i<=num; i++)
{
fac = fac*i;
}
return(fac);
}
static void swag(int s, int l)
{
int sum = 0;
int d,temp, fax, i;
for(i=s;i<=l;i++)
{
temp = i;
while(temp>0)
{
d=temp%10;
fax = fact(d);
sum += fax;
temp/=10;
}
if(sum==i)
System.out.println(i+" is special");
}
}
static void Print()
{
Scanner input = new Scanner(System.in);
swag(input.nextInt(),input.nextInt());
}
}
对于 1-1000,预计为:
1 is special
2 is special
145 is special
我得到的:
1 is special
注意:对于 2-1000,它打印2 is special
,从 3-1000 不打印任何内容
您不会在循环中将 sum
的值重置为 0。
static void swag(int s, int l)
{ int sum = 0;int d,temp, fax, i;
for(i=s;i<=l;i++)
{
sum=0;
temp = i;
while(temp>0)
{
d=temp%10;
fax = fact(d);
sum += fax;
temp/=10;
}
if(sum==i)
System.out.println(i+" is special");
}
}