【问题标题】:How to set a new value for a public int in java如何在java中为公共int设置新值
【发布时间】:2012-01-15 04:20:26
【问题描述】:

在java编程语言中,如何为公共整数设置一个新值,以便外部类中的外部方法可以通过简单地调用变量名来获取该值。我有示例代码:

    package build;

    public class Main {

        public static void main(String[] args) {
            Main main = new Main();
            main.init();
        }

        public int myVar = 1;

编辑:

更具体的问题:如何在不将其传递给方法的情况下获取变量的更新值,而不是初始值?

        public void init() {
            Retrieve ret = new Retrieve();
            int i = 0;
            for(int n = 1; n > 0; ++n) {
                myVar = myVar + 1;
                System.out.println("Value: " + myVar);
                i = ret.init();
                System.out.println("Retrieved Value: " + i);
            }
        }

        int getValue()  {
            int b = myVar;
            return b;
        }
    }

返回:

    package build;

    public class Retrieve {

        public int init() {
            Main main = new Main();
            int a = 1;
            a = main.getValue();
            return a;
        }
    }

在上面的示例中,我如何将变量“myVar”设置为非 1 的值,这样当我在 'return' 类中调用 'init' 方法时,它会返回该新值,而不是 1 ,起始值?

【问题讨论】:

    标签: java variables integer


    【解决方案1】:

    你的对象关系出了点问题。

    主要问题在 Retrieve.init()

    public int init() {
            Main main = new Main();
            int a = 1;
            a = main.getValue();
    

    每次调用 init() 时,您都会创建一个新的 main 实例,因此 main.myVar 将为 1。我假设您想调用第一个 main 的值。

    public class Retrieve {
    
        public int init(Main main) {            
            int a = 1;
            a = main.getValue();
            return a;
        }
    }
    

    并在 Main.init 中更改

    Retrieve ret = new Retrieve();
    

    Retrieve ret = new Retrieve(this);
    

    【讨论】:

    • 哦,有道理,我会尝试并回复您。
    • 工作得非常好,除了没有设置“Retrieve ret = new Retrieve(this)”,我设置了“i = ret.init(this)” 除了那个完美的答案,正是我想要的.
    【解决方案2】:

    这是相当糟糕的OOP,但这工作:

    public class Retrieve {
    
        public int init() {
            Main main = new Main();
            int a = 1;
            main.myVar = 42;
            a = main.getValue();
            return a; // returns 42
        }
    }
    

    【讨论】:

    • 如果不是说(在我的主类中)main.myVar = main.myVar + 1,它会起作用吗?这就是我想要做的,是检索变量,而不是将其设置为所需的值,我希望能够检索它并获得它的更新值,而不是它的起始值。
    猜你喜欢
    • 1970-01-01
    • 2014-11-22
    • 2022-01-17
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    相关资源
    最近更新 更多