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");
    }
}