1

これには非常に簡単な解決策があると確信していますが、答えを見つけるのに必死に苦労しています。メインクラスの値をclassAに設定し、classBでその値を取得して、メインで答えを返す前に何か他のことをしようとしています:

例:

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        ClassA classA = new ClassA();
        ClassB classB = new ClassB();

        System.out.println("Number: ");
        classA.setX(input.nextInt());

        System.out.println("Total: " + classB.printTotal());

    } // main
} // class

クラスA:

public class ClassA {
    int x;

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }
} // class

クラスB:

public class ClassB {
    ClassA classA;

    public int printTotal() {
        int y = classA.getX() * 5;
        return y;
    }
} // class

入力したものは何でも null を返します。なぜそうなるのかは理解できますが、解決策がわかりません。

4

6 に答える 6

2

コンストラクターまたは(セッター)メソッドのいずれかを介しClassBて依存関係を定義する必要があります。ClassA

public ClassB(ClassA classA) {
    this.classA = classA;
}

//or/and

public void setClassA(ClassA classA) {
    this.classA = classA;
}

そして、main次のように依存関係を挿入します。

ClassB classB = new ClassB(classA);
于 2012-11-15T05:24:11.617 に答える
1

ClassB に ClassA のインスタンスを含めるのではなく、おそらく ClassA オブジェクトをパラメーターとして printTotal に渡す必要があります。

public class ClassB {
    public int printTotal(ClassA classA) {
        int y = classA.getX() * 5;
        return y;
    }
} // class
...

System.out.println("Total: " + classB.printTotal(classA));

それが役立つことを願っています!

于 2012-11-15T05:23:31.297 に答える
1

main では、classA オブジェクトで classB の classA 変数を設定し、残りは問題ないはずです。

両方のクラスが同じパッケージにある場合は、以下のようにオブジェクトを割り当てるだけで完了です。

    ClassA classA = new ClassA();
    ClassB classB = new ClassB();
    classB.classA = classA;//assign classA to ClassB's classA attribute

それ以外は:

    ClassA classA = new ClassA();
    ClassB classB = new ClassB();
    classB.setClassA(classA);//assign classA to ClassB's classA attribute

ClassB では、setter メソッドを次のように追加します。

     public void setClassA(ClassA classA){
        this.classA = classA;
     }
于 2012-11-15T05:24:24.423 に答える
0

値を出力する前に、urmainに追加する必要があります。

 classB.classA = classA;

したがって、classbで初期化されたclassAは、メインで設定したx値を持つことができます。これが幸運に役立つことを願っています!

于 2012-11-15T05:26:37.183 に答える
0

ClassB には ClassA のインスタンスへの参照がありません。したがって、セッターを再度使用するか、コンストラクターで ClassA のインスタンスを設定することをお勧めします。

public ClassB(ClassA instance) {
   this.classA = instance;
}
于 2012-11-15T05:22:22.720 に答える
0

ではclass BclassAのオブジェクトを参照する必要がありますA

コンストラクターを含めるclass B

public B(A a) {
    this.classA = a;
}

main メソッドで、 で初期化classBclassB = new B(classA);ます。

于 2012-11-15T05:25:21.730 に答える