2017-02-17 3 views
-1

から私は、Javaを勉強し、ここでは、クラスBからクラスAの方法で定義された変数にアクセスしている間、私は問題に直面していますが、私のコードでの値にアクセスする方法:、変数「i」は、他のクラス

public class A{ 
...... 
...... 
public int dummy(){ 
for(int i=1; i<=10; i++){ 
//here are some code 
} 

私はクラスBの下で私の値にアクセスしたいですが、私はこれを達成しようとしましたが、何も成功しません。

public class B{ 
..... 
..... 
A var1 = new A(); 
int new = var1.i; 
} 
+0

この場合、あなたはできません。基本的な概念と構文については、基本的なJavaチュートリアルを参照してください。 – pvg

+3

定義されているメソッドの外でローカル変数にアクセスすることはできません。また、 'new'は予約済みのキーワードです。 – shmosel

+0

この変数にアクセスする方法はありますか?私のコードで何を変えるべきですか? –

答えて

0

あなたが本当に外Aからiにアクセスしたい場合は、あなたがそれを公共のメンバーにする必要があります、このように:

public class A{ 
    public int i; 
    public int dummy(){ 
     for(i=1; i<=10; i++){ 
      // some code 
     } 
    } 
} 

あなたが記述何のために多くの使用がありません、しかし、。通常、インデックスiのようなイテレータは、ループの外側に何の意味も持たないため、ループのローカル(ループの外側からはアクセスできない、関数またはクラスは除きます)として宣言されます。

0

これはできません。forループで宣言された変数iは、forループ内でのみアクセス可能です。

変数にアクセスする場合は、インスタンス変数または静的変数として宣言する必要があります。あなたの現在の実装で

public class A{ 
public int j; 
...... 
public int dummy(){ 
for(int i=1; i<=10; i++){ 
j = i; 
} 
} 
0

それはあなたのforループではなく、メンバ変数またはあなたがまたnewとして、変数newに名前を付けることができないクラスA の静的変数としてでローカルに宣言されているとして、あなたはiにアクセスすることはできません予約語です。その仕事

public class A { 
    private int i = 1; 
    public int getI() { 
     return this.i; 
    } 
} 

public class B { 
    public void someMethod() { 
     A var1 = new A(); 
     int var2 = var1.getI(); 
    } 
} 
0
public class A{ 

    public A(){ 

    } 

    public int dummy(){ 

     int i; 

     for(i=1; i<=10; i++){ 
      //here are some code 
     } 

     return i; 
    } 
} 


public class B{ 

    public B(){ 
     A var1 = new A(); 
     int new = var1.dummy(); 
    } 
} 

関連する問題