iaojfkojgpakm
@iaojfkojgpakm (ai ueo)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

javaにおいての配列について

javaについての質問です。
学校の課題であるプログラムを書いているのですが、Aクラスで定義したものをBクラスのメソッドで配列として用いています。それをBクラスのrunメソッドでAクラスで定義したものを用いたいのですがスコープの関係でできません。この配列をローカル変数にしたらできると考えたのエスがその配列をローカル変数にする方法を教えていただきたいです。
初心者ですがお願いいたします。

0

2Answer

その文章だけではやりたいことがイメージできません。動かなくてもいいので書いたコードがあれば貼ってください。また「A クラス」や「配列」だけではなく、何をするクラスか、何を格納する配列か、プログラム全体としてどんな処理をして何を出力するかなども説明してください。

ローカル変数で配列を定義するなら int[] numbers = {1, 2, 3}; のように書くだけですが、クラスの間で配列をやりとりしたいであろうことを考えると、ローカル変数にすることが正しい解決策とは限りません。そのために、やりたいことをはっきりさせる必要があります。

1Like

Comments

  1. @iaojfkojgpakm

    Questioner

    IMG_1176.png
    image.png
    image.png

    reactsという配列をrunメソッドで使いたいです!
    コメントアウトしているところです!
    お願いします!

メソッドの引数にインスタンスか配列を渡せばできます。

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;
    }
}
0Like

Your answer might help someone💌