2012-09-18 112 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; 
} 
相關問題