【问题标题】:Accessing non-static methods containing variables from the class inside the main method?从主方法中的类访问包含变量的非静态方法?
【发布时间】:2012-09-18 15:53:47
【问题描述】:

我正在学习 java,并试图创建一个简单的程序来帮助我找到一种方法(如果有的话)来访问同一类的 main 方法中的非静态方法。这就是我目前所拥有的

import java.util.Scanner;

public class MethodVariables

{

    public int num1;
    public int num2;
    public int add = (num1 + num2);
    public int sub = (num1 - num2);

    public static void main(String[] args)
    {
        Scanner input = new Scanner (System.in);

        System.out.println("Please enter the first number: ");
        String num1 = input.nextLine();
        System.out.println("Please enter the second number: ");
        String num2 = input.nextLine();
        input.close();

        // I know these wouldn't work this way but this is just to show what I am trying to accomplish
        addition(add);    
        subtraction(sub);
    }

    public void addition(int add)
    {
        System.out.println("The sum of the two is: " +add);
    }

    public void subtraction(int sub)
    {
        System.out.println("The diference of the two is: "+sub);
    }
}

如果有人知道我忽略了什么,我将不胜感激。

【问题讨论】:

  • 将addition() 和subtraction() 方法也设为静态。您不能从 Java 中的静态上下文访问实例数据。替代方法:在 main() 中创建 MethodVariables 的实例,并使用该实例获取 add() 和 subtraction() 成员。

标签: java variables methods static


【解决方案1】:

当然,只需在main 中创建一个类的实例:

MethodVariables instance = new MethodVariables();

instance.addition(num1);
instance.subtraction(num2);

由于additionsubtraction实例方法,所以您总是需要一个类的实例来调用它们。

【讨论】:

    【解决方案2】:

    这与原问题无关,但值得指出:

    public int add = (num1 + num2);
    

    这不会像您期望的那样工作。如果你想要一个将两个数字相加的函数,只需创建一个将两个数字相加的函数即可。

    public int add(int num1, int num2) {
        return num1 + num2;
    }
    
    public int subtract(int num1, int num2) {
        return num1 - num2;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 2012-06-29
      • 2011-02-13
      • 1970-01-01
      • 2021-01-03
      • 2012-07-17
      相关资源
      最近更新 更多