javaにおいての配列について
javaについての質問です。
学校の課題であるプログラムを書いているのですが、Aクラスで定義したものをBクラスのメソッドで配列として用いています。それをBクラスのrunメソッドでAクラスで定義したものを用いたいのですがスコープの関係でできません。この配列をローカル変数にしたらできると考えたのエスがその配列をローカル変数にする方法を教えていただきたいです。
初心者ですがお願いいたします。
0
javaについての質問です。
学校の課題であるプログラムを書いているのですが、Aクラスで定義したものをBクラスのメソッドで配列として用いています。それをBクラスのrunメソッドでAクラスで定義したものを用いたいのですがスコープの関係でできません。この配列をローカル変数にしたらできると考えたのエスがその配列をローカル変数にする方法を教えていただきたいです。
初心者ですがお願いいたします。
その文章だけではやりたいことがイメージできません。動かなくてもいいので書いたコードがあれば貼ってください。また「A クラス」や「配列」だけではなく、何をするクラスか、何を格納する配列か、プログラム全体としてどんな処理をして何を出力するかなども説明してください。
ローカル変数で配列を定義するなら int[] numbers = {1, 2, 3};
のように書くだけですが、クラスの間で配列をやりとりしたいであろうことを考えると、ローカル変数にすることが正しい解決策とは限りません。そのために、やりたいことをはっきりさせる必要があります。
@iaojfkojgpakm
Questioner
メソッドの引数にインスタンスか配列を渡せばできます。
public class Main {
public static void main(String[] args) {
A a = new A();
B b = new B();
b.run(a.data); // 1
a.run(); // 9
}
}
class A {
int[] data = {1, 2, 3};
void run() {
System.out.println(data[1]);
}
}
class B {
void run(int[] data) {
System.out.println(data[0]);
data[1] = 9; // a.dataが書き換わる
}
}
もし、メソッドの引数を変更できないなら、コンストラクタで渡しておくといいです。
public class Main {
public static void main(String[] args) {
A a = new A();
B b = new B(a.data);
b.run(); // 1
a.run(); // 9
}
}
class A {
int[] data = {1, 2, 3};
void run() {
System.out.println(data[1]);
}
}
class B {
int[] data;
B(int[] data) {
this.data = data;
}
void run() {
System.out.println(data[0]);
data[1] = 9;
}
}