返回值java的方法无法正常工作

时间:2018-04-18 19:09:18

标签: java class methods

假设我有一个典型的java类,如

public class Waiter {
    private int Id;
    private String name;
    private int active;
    //Including constructor, getter and setter
}

现在我想创建一个可以更改活动变量的函数。我知道,在这种情况下,我可以简单地使用setter,但我想在我需要的时候调用一个函数。

我的功能目前看起来像这样

public void login(int a) {
    int b = 2;
    a = b + a;
}

现在我想用

来调用它
login(2)

但它不会在main中更新我的值?

1 个答案:

答案 0 :(得分:2)

您的login(int a)方法背后的逻辑错误。

通过调用login(2),您将2的值(call-by-value)传递给本地变量 a,然后将b添加到其中它确实有效如果你打算在最后打印价值:

public void login(int a) {
        int b = 2;
        a = b + a;
        System.out.println( a ); // this prints 4 if login(2) is called.
    }

要保留此值,您必须将新值分配给另一个变量,例如active = a + b;或返回值,以便该方法返回该值,并可以外包存储:

public int login(int a) {
        int b = 2;
        a = b + a;
        return a;
    }

这将允许您在主方法中执行以下操作:

public static void main( String[] args )
{
    Waiter wa = new Waiter();

    int stored = wa.login( 2 );
    System.out.println( stored ); // prints also 4
}