要打印阶乘的值,我想在事实()函数中使用事实的值。我该如何实现?
我尝试在facto()函数中声明变量i和事实。
public class Factorial {
int fact=1;
int n=5,i=1;
void facto()
{
for(i=n;i>=1;i--)
{
fact=fact*i;
}
}
public static void main(String args[])
{
Factorial obj1= new Factorial();
System.out.println(obj1.fact);
}
}
我得到的答案是它从类中获取值并用1初始化。我想获得120作为解决方案。
答案 0 :(得分:1)
不要使用字段。使用参数和返回值。
public class Factorial {
private int facto(int n) {
int fact = 1;
for (int i = n; i >= 1; i--) {
fact = fact * i;
}
return fact;
}
public static void main(String args[]) {
Factorial obj1 = new Factorial();
System.out.println(obj1.facto(5));
}
}
答案 1 :(得分:1)
虚函数是指不返回任何值的函数,因此使用虚函数是错误的。
如果要从方法中获取值。您应该使用可以返回值的方法,如下所示:
public class Factorial {
public int facto()
{
int fact=1;
int n=5,i=1;
for(i=n;i>=1;i--)
{
fact=fact*i;
}
return fact;
}
public static void main(String args[])
{
Factorial obj1= new Factorial();
System.out.println(obj1.facto());
}
}
ps:我已将变量的位置更改为facto()方法的范围,并发出@Idle_Mind警告。 因为这有一点副作用,如果多次调用facto(),您将获得不同的结果。要“修复”此问题,您可以在facto()中将“事实”重新初始化为1。