在java的另一个方法中检索局部变量值

e0bqpujr  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(242)
public class DemoClass {

    public void setValue(int a, int b)
    {
        int x=a;
        int y=b;
    }
    public void getValue()
    {

    }
    public static void main(String[] args)
    {
        DemoClass dc=new DemoClass();
        dc.setValue(10, 20);
        dc.getValue();
    }
}

在上面的程序中,我有两个方法setvalue()和getvalue()。setvalue方法有两个变量x和y,分别赋值为10和20(来自主方法)。
现在我想在getvalue()方法中显示x和y变量的值。但这是不可能的,因为它们是局部变量。有没有可能的办法?

icomxhvb

icomxhvb1#

有没有可能的办法?
通常的做法是使它们成为类的字段,特别是示例字段:

public class DemoClass {

    private int x;           // These are
    private int y;           // instance fields

    public void setValue(int a, int b)
    {
        this.x = a;
        this.y = b;
    }

    public void getValue()
    {
        // Use `this.x` and `this.y` here
    }

    public static void main(String[] args)
    {
        DemoClass dc=new DemoClass();
        dc.setValue(10, 20);
        dc.getValue();
    }
}

用单个字段设置两个独立字段的情况相对较少 setValue 方法,但有用例。通常你会 setX 以及 setY (和 getX 以及 getY ).

cs7cruho

cs7cruho2#

您可以将它们设置为public,或者如果您想使用getter和setter,您可以这样做。

public class DemoClass {
    private int x;
    private int y;
    public void setValue(int a, int b)
    {
        this.x=a;
        this.y=b;
    }
    public void getValue()
    {
        System.out.println(this.x);
        System.out.println(this.y);
    }
    public static void main(String[] args)
    {
        DemoClass dc=new DemoClass();
        tc.setValue(10, 20);
        tc.getValue();
    }
}

也可以将信息放入构造函数中,如下所示:

public class DemoClass {
    private int x;
    private int y;
    public DemoClass() {
        this.x = 0; // default value
        this.y = 0; // default value
    }
    public void setValue(int a, int b)
    {
        this.x=a;
        this.y=b;
    }
    public void getValue()
    {
        System.out.println(this.x);
        System.out.println(this.y);
    }
    public static void main(String[] args)
    {
        DemoClass dc=new DemoClass();
        tc.setValue(10, 20);
        tc.getValue();
    }
}

这样,当您创建如下对象时:

DemoClass demoClass = new DemoClass();

它已经设置了这些对象。如果您不这样做,并且意外地调用getvalue(),并且没有设置任何内容,那么您将得到一个 nullPointerException .

相关问题