Java 在无法工作的范围内打印特殊编号
需要使用这三种方法打印Java 在无法工作的范围内打印特殊编号,java,Java,需要使用这三种方法打印s和l之间的所有特殊数字。然而,我的程序只是打印其他内容。找不到我做错了什么。任何帮助都将不胜感激:) 我试着调用fact,无论是否使用“this” 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)
s
和l
之间的所有特殊数字。然而,我的程序只是打印其他内容。找不到我做错了什么。任何帮助都将不胜感激:)
我试着调用fact
,无论是否使用“this”
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 is special
注意:对于2-1000,它打印
2是特殊的
,而从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");
}
}
static void swag(int s,int l)
{int sum=0;int d,temp,fax,i;
对于(i=s;i0)
{
d=温度%10;
传真=事实(d);
总和+=传真;
温度/=10;
}
如果(总和=i)
System.out.println(i+“是特殊的”);
}
}
在调试器中执行此操作时,您会看到什么?请遵循@ControlAltDel的观点:观察sum
发生了什么。这是什么意思?我是一名10年级计算机科学专业的学生,不太清楚什么是调试器…@Andreas:这里的问题与递归无关。在这种情况下,Yo@Andreas temp%10是5,而不是14。非常感谢!现在效果很好。谢谢你简洁的回答,而不是其他居高临下的回答。冷静,大多数人的意思都是好的。一定要学习如何在IDE中使用调试器。如果可能的话,调试器可以挽救生命。干杯
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");
}
}