我正在尝试建立强数程序,但没有得到预期的输出

时间:2019-07-04 17:32:19

标签: java

我正在尝试编程,以确保用户输入的no是否为强数,但是我得到的输出为145 = 1! + 4!+ 5!= 145是一个很强的数字
123 = 1! + 2! + 3!= 9不是一个强数

<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/folktale/2.0.1/folktale.min.js"></script>

例如,我没有输入145,我希望输入的输出数字很强,但实际输入的数字不是很强

3 个答案:

答案 0 :(得分:2)

您没有在fact循环之间重置while变量。

只需在循环开始时添加fact = 1;,或在循环内移动变量声明int fact = 1;,使其仅存在于其作用域内。

在这个阶段,这可能与您无关,但是我建议您利用这个机会来学习如何使用调试器。以后会有很大帮助。

答案 1 :(得分:0)

在循环内移动int fact = 1;。这不会重置。

答案 2 :(得分:0)

应该是这样的:

    public static void main(String[] args)
    {
        Scanner s=new Scanner(System.in);
        int n=s.nextInt();
        int temp=n;
        int sum = getStrongNumberSum(n);

        if(sum==temp) {
            System.out.println("number u have entered is strong");
        } else {
            System.out.println("no is not strong");
        }
    }

    private static int getStrongNumberSum(int n) {
        int sum = 0;
        while (n != 0) {
            int fact = 1; // main change !!!
            int rem = n % 10;
            for (int i = 1; i <= rem; i++) {
                fact = fact * i;
            }
            sum = sum + fact;
            n = n / 10;
        }
        return sum;
    }