打印某个范围内的特殊数字不起作用



需要使用这三种方法打印sl之间的所有特殊数字。但是,我的程序只是打印其他内容。找不到我做错了什么。任何帮助将不胜感激:)

我试过用或不带"这个"来称呼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");
    }
}

最新更新