0

作成中の小さなプログラムに問題があります。基本的に私は6つのクラスを持っています。1 つのメイン クラス、メイン クラスを「拡張」する 4 つのサブ クラス、およびプログラムを実行する別のクラス。プログラムを実行するクラスは、これまでのところ次のようにレイアウトされています。

public class ClassToRunProgram {

public void main(String[] args){

Class1 a = new Class1(0, "class1"); //I've created 1 main class (Class5) that 
Class2 b = new Class2(1, "class2"); //these 4 classes extend.
Class3 c = new Class3(2, "class3");
Class4 d = new Class4(3, "class4");

int randomNum = (int) (Math.random() *3);

Class5[] arrayForClasses = new Class5[]{a, b, c, d}; //since they're extending this
                                                    //class I want to make them into
                                                   //a single Array?


    String numberQuestion = JOptionPane.showInputDialog(null, 
"What question do you want to ask? \n 
Enter a number: \n 
1. First Question? \n 
2. Second Question? \n 
3. Third Question?");

int question = Integer.parseInt(numberQuestion); //not sure if this part is 
                                                //actually relevant at all??
                                               //Think it might be since I want to
                                              //use integers in my if statement below


if(question == 1){
    JOptionPane.showMessageDialog(null, "Blah blah"+arrayForClasses.getReturnValue()+" blah");
}

.getReturnValue() メソッドは、すべてのクラス (1 ~ 5) 内にあります。これが実際に私がしなければならないことなのかどうかはわかりません。しかし、私が抱えている問題は、コンパイルすると(完了していなくても)、「シンボル:メソッド.getReturnValue()ロケーション:変数arrayForClassesタイプClass5 []」というメッセージで「CANNOT FIND SYMBOL」エラーが発生することです。 . 私はこれでどこが間違っているのだろうか?

どんな助けでも大歓迎です。

ありがとう!

4

2 に答える 2

2

arrayForClassesは配列であり、メソッドを配列に追加することはできず、配列のオブジェクトにのみ追加できます。配列自体ではなく、配列内のオブジェクトでメソッドを呼び出す必要があります。だから何か

arrayForClasses[0].getReturnValue()

さて、私はあなたがやろうとしていることを理解するのに苦労しているので、「何かのような」と言います.そうする具体的な理由。

于 2012-04-29T21:36:12.087 に答える
1

arrayForClasses配列です。getReturnValue()オブジェクトを含むクラスの1つではないため、メソッドはありません

配列の要素 (またはそのサブクラスのオブジェクト) にアクセスし、それを呼び出す必要あります。Class5getReturnValue()

arrayForClasses[0].getReturnValue()

インデックスは 0 から 3 (合計 4 要素) まであり、いずれかを使用できます。それらすべてにループでアクセスすることもできます。

for (Class5 elem : arrayForClasses) { // cycles through each element in order
  elem.getReturnValue();
}
于 2012-04-29T21:37:49.180 に答える