如何从其他函数使用变量?

时间:2019-05-26 21:42:21

标签: java

要打印阶乘的值,我想在事实()函数中使用事实的值。我该如何实现?

我尝试在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作为解决方案。

2 个答案:

答案 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。