我怎样才能加在一起Java中的一个方法整数水平,并和实例整数水平? [重复]

问题描述 投票:0回答:3

这个问题已经在这里有一个答案:

我得到一个错误,说“非静态变量constantInteger不能从静态上下文中引用”

如何添加所有三个整数无需改变自己的水平?

    public class VariableAdder {

      final int constantInteger = 5;
      int instanceInteger = 10;

      public static void main(String[] args) {

        int methodInteger = 20;
        int result = constantInteger + instanceInteger + methodInteger;
        System.out.println(result);

      }

    }

预期结果:增加两个实例变量和一个方法变量和打印。实际结果:错误

谢谢大家的帮助!

java variables add
3个回答
3
投票

你不能用一个实例变量(Class级别,非静态,最终/非最终)一个静态方法中(main()你的情况)。

实例化VariableAdder和使用实例来引用实例变量将解决你的问题。事情是这样的:

public class VariableAdder {

    final int constantInteger = 5;
    int instanceInteger = 10;

    public static void main(String[] args) {

        VariableAdder t = new VariableAdder();

        int methodInteger = 20;
        int result = t.constantInteger + t.instanceInteger + methodInteger;
        System.out.println(result);

    }


如果你是不是在找创建一个实例,声明constantIntegerinstanceInteger静态和直接访问它们的main()


1
投票

实例变量和实例不变意味着你才能访问他们需要一个实例。为了您的代码示例,这意味着创建类VariableAdder的一个实例。要创建一个实例调用构造函数。在Windows 10下成功地与JDK 11.0.2运行

public class VariableAdder {

    final int constantInteger = 5;
    int instanceInteger = 10;

    /** Constructor */
    public VariableAdder() {
    }

    public static void main(String[] args) {
        int methodInteger = 20;

        // Create an instance of class 'VariableAdder'
        VariableAdder adder = new VariableAdder();

        int result = adder.constantInteger + adder.instanceInteger + methodInteger;
        System.out.println(result);
    }
}

0
投票

这应该工作:

final static int constantInteger = 5;
static int instanceInteger = 10;

public static void main(String[] args) {

    int methodInteger = 20;
    int result = constantInteger + instanceInteger + methodInteger;
    System.out.println(result);

}

编辑:OR

final static int constantInteger = 5;
static int instanceInteger = 10;

public static void main(String[] args) {

    MyClass runner = new MyClass();

    int ti=runner.instanceInteger;
    int methodInteger = 20;
    int result = constantInteger + instanceInteger + methodInteger;
    System.out.println(result);

}
© www.soinside.com 2019 - 2024. All rights reserved.