2016-05-10 3 views
-1
public class DemoClass { 

    public void setValue(int a, int b) 
    { 
     int x=a; 
     int y=b; 
    } 
    public void getValue() 
    { 

    } 
    public static void main(String[] args) 
    { 
     DemoClass dc=new DemoClass(); 
     dc.setValue(10, 20); 
     dc.getValue(); 
    } 
} 

上記のプログラムでは、2つのメソッドsetValue()とgetValue()があります。 SetValueメソッドには、xとyという2つの変数があり、これらには10と20の値が割り当てられます(メインメソッドから)。javaの別のメソッドでローカル変数の値を取得する

ここで、getValue()メソッドにxとy変数の値を表示します。しかし、これはローカル変数なので不可能です。これを行う方法はありますか?

+0

いいえ、クラスメンバにすることによってのみ行うことができます – SomeJavaGuy

+0

それらをインスタンス変数にします – Ramanlfc

答えて

0

パブリックとして設定することもできますし、ゲッターとセッターを使用することもできます。あなたはまた、そのようにコンストラクタ関数に情報を置くことができる

public class DemoClass { 
    private int x; 
    private int y; 
    public void setValue(int a, int b) 
    { 
     this.x=a; 
     this.y=b; 
    } 
    public void getValue() 
    { 
     System.out.println(this.x); 
     System.out.println(this.y); 
    } 
    public static void main(String[] args) 
    { 
     DemoClass dc=new DemoClass(); 
     tc.setValue(10, 20); 
     tc.getValue(); 
    } 
} 

public class DemoClass { 
    private int x; 
    private int y; 
    public DemoClass() { 
     this.x = 0; // default value 
     this.y = 0; // default value 
    } 
    public void setValue(int a, int b) 
    { 
     this.x=a; 
     this.y=b; 
    } 
    public void getValue() 
    { 
     System.out.println(this.x); 
     System.out.println(this.y); 
    } 
    public static void main(String[] args) 
    { 
     DemoClass dc=new DemoClass(); 
     tc.setValue(10, 20); 
     tc.getValue(); 
    } 
} 

そのように、あなたのようなオブジェクトを作成するとき:

DemoClass demoClass = new DemoClass(); 

それはすでに設定されているこれらのオブジェクトを持っています。これを行わずに誤ってgetValue()を呼び出しても何も設定されていない場合は、nullPointerExceptionが返されます。

3

可能な方法はありますか?

いつもの事は彼らにフィールドクラスの、特にインスタンスフィールドを作ることです。

public class DemoClass { 

    private int x;   // These are 
    private int y;   // instance fields 

    public void setValue(int a, int b) 
    { 
     this.x = a; 
     this.y = b; 
    } 

    public void getValue() 
    { 
     // Use `this.x` and `this.y` here 
    } 

    public static void main(String[] args) 
    { 
     DemoClass dc=new DemoClass(); 
     dc.setValue(10, 20); 
     dc.getValue(); 
    } 
} 

それは単一setValueメソッドを持つ2つの別々のフィールドを設定するには比較的まれだが、そこにありますユースケース。通常、setXsetY(とgetXgetY)があります。

関連する問題