查找用户输入的数字的阶乘的代码错误
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);
}
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);
}