查找用户输入的数字的阶乘的代码错误

Error in code to find the factorial of a number entered by a user

public static int Factorial(int num) {
    int factorial = 1;
    int num = Integer.parseInt(txtFactorial.getText());

    for (int i = 1; i <= num; i++) {
        factorial = factorial * 1;
    }

    return factorial;
}

上面的代码是我试图放入子程序中的代码,用于查找用户输入的数字的阶乘并将其显示在 JLabel 中。问题是它显示 int num = Integer.parseInt(txtFactorial.getText()); 代码错误。这段代码获取用户的输入并将其存储到变量 num 中,以供稍后用于查找阶乘。

变量'num'已经在范围

中定义
int num2 = Integer.parseInt(txtFactorial.getText());

写上面的f你想要一个新的变量

num = Integer.parseInt(txtFactorial.getText());

如果要改变现有变量num的值,就写上面的内容。

变量num中存在重复项,您需要为该局部变量使用另一个值:

int num = Integer.parseInt(txtFactorial.getText());

改用这个:

int parsedNum = Integer.parseInt(txtFactorial.getText());

如果您更改局部变量的名称,那么它应该可以工作。

你应该改变你的计算方式。

public static int Factorial(int num)
{
    int factorial = 1;
    // delete this line int num = Integer.parseInt(txtFactorial.getText());    
    for (int i = 1; i<=num; i++)
    {
        factorial = factorial * i;
    }    
    return factorial;
}

并像这样使用函数:

ResultLabel.setText(string.valueOf(Factorial(Integer.parseInt(txtFactorial.getText()))));

正整数 n 的阶乘 - 是所有小于或等于 n 的正整数的乘积。 0 的阶乘是 1.

public static void main(String[] args) {
    System.out.println(factorial(3));   // 6
    System.out.println(factorial(0));   // 1
    System.out.println(factorial(-10)); // 1
}
public static int factorial(int num) {
    // factorial of a positive integer, or 1 otherwise
    int factorial = 1;
    for (int i = 1; i <= num; i++) {
        // sequential multiplication
        // of numbers in the loop
        factorial = factorial * i;
    }
    return factorial;
}

使用 streams,您的代码可能如下所示:

public static int factorial(int num) {
    // factorial of a positive integer, or 1 otherwise
    return IntStream.rangeClosed(1, num)
            // sequential multiplication
            // of numbers in the stream
            .reduce((a, b) -> a * b)
            .orElse(1);
}