2012-09-18 68 views
2

我正在学习java,并试图创建一个简单的程序来帮助我找到一种方法(如果有的话)访问同一个类的主方法内的非静态方法。这是我到目前为止访问包含主方法内部类的变量的非静态方法?

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); 
    } 
} 

如果有人知道我俯瞰我会欣赏的帮助。

+0

使add()和subtraction()方法也是静态的。您不能从Java中的静态上下文访问实例数据。可选:在main()中创建MethodVariables的一个实例,并使用该实例获取addition()和subtraction()成员。 – Patrick87

回答

2

当然,只是在main创建类的实例:

MethodVariables instance = new MethodVariables(); 

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

由于additionsubtraction实例方法,那么你将永远需要的类的实例给他们打电话的。

0

这是不相关原来的问题,但值得指出的是:

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; 
} 
相关问题