我想用get方法计算数字的阶乘(我必须解决一个更大的问题)。这是我尝试过的,它返回1
:
public Sigma() {
n = -1;
}
public Sigma(int n) {
n = n;
}
private int Facto(int n) {
for (int i = 1; i <= n; i++) {
result = result * i;
}
return result;
}
public int getFacto() {
return Facto(n);
}
答案 0 :(得分:0)
问题在于,在构造函数中,键入n = n
而不是this.n = n
。这个问题是指定了构造函数中的局部变量,而不是类的字段。 this.n
指的是n
字段,是您想要的。
您收到的输出为1
,因为所有原始数字字段的默认值为0
。使用你的代码,0!
= 1
(这是正确的),所以无论你传递给构造函数是什么,这都是你的输出,因为构造函数忽略了它的参数。
在不相关的说明中,请使用camelCase而不是UpperCase作为方法名称(和字段名称)。 UpperCase只能用于类/接口/枚举/注释。此外,result = result * n
可以简化为(almost)等效语句result *= n
。
答案 1 :(得分:0)
对于factorial,你需要在facto函数中初始化结果,比如
private int Facto(int n)
{
int result = 1;
for (int i = 1; i <= n; i++)
{
result = result * i;
}
return result;
}
答案 2 :(得分:-1)
谢谢你的一切。我解决了我的问题。我用this.n改变了n.n并且非常感谢。