gpt4 book ai didi

java - 我想使用默认的参数化构造函数查找数字的阶乘。输出为 0

转载 作者:行者123 更新时间:2023-11-29 04:38:25 25 4
gpt4 key购买 nike

我已经声明了一个默认构造函数和一个参数化构造函数。我使用单个对象同时调用构造函数和函数。当我运行程序时,我得到的输出是 0 而不是阶乘。我已初始化 f=1,但输出仍为 0。

class Factorial
{
int num, f;

Factorial()
{
f = 1;
}

Factorial(int n)
{
num = n;
}

public int getFactorial()
{
for(int i = 1; i <= num; i++)
{
f = f * i;
}
System.out.println("Factorial= " + f);
return f;
}

public static void main(int m)
{
Factorial obj = new Factorial();
obj = new Factorial(m);
obj.getFactorial();
}
}

最佳答案

这是因为当使用 factorial(int n) 构造函数初始化类时,f 的初始值保持为零。

在初始化程序中将 f 设置为 1 以解决此问题:

int n, f = 1;

Factorial() {
}

Factorial(int n) {
num = n;
}

这给您的类留下了一个大问题:多次调用 getfactorial 会改变类的状态,增加阶乘的值。您可以通过创建一个 boolean 变量来解决此问题,该变量指示是否已计算阶乘,并在执行计算后返回 f

如果您不需要“惰性”计算,请将f 设为方法中的局部变量。

关于java - 我想使用默认的参数化构造函数查找数字的阶乘。输出为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40268766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com