2012-04-29 63 views
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 []」 。我只是想知道我在哪裏錯了?

任何幫助,非常感謝。

謝謝!

+0

'arrayForClasses'是一個數組;它沒有一個名爲'getReturnValue()'的方法。 –

+0

arrayForClasses是一個Class5 [],它是一個數組 - 並且數組沒有getReturnValue()方法。你真的不需要5個班級,你需要1個班級「問題」,你應該做4個(或其他數量)的班級實例 - 每個問題一個。 – esej

+1

使用像arrayForClasses [0] .getReturnValue()這樣的數組索引調用getReturnValue()方法。 – Lion

回答

2

arrayForClasses是一個數組,你不能將方法添加到數組中,只能向中的對象數組中添加數組。您需要調用數組中對象的方法,而不是數組本身。因此,像

arrayForClasses[0].getReturnValue() 

現在,我說「像」,因爲我在下面你想做什麼困難時期,我有點擔心這個想法把「getReturnValue的()「方法分成許多不同的類,沒有特定的理由這樣做。

+0

我把「getReturnValue()」方法,把所有的類,因爲我擔心,它不會調用它。我只是把它們放在主類中,並將它改爲「arrayForClasses [0]」,正如你向我展示的那樣,它工作正常。謝謝! – car

1

arrayForClasses是陣列;它不是它包含的對象的類中的一個,因此它不具有getReturnValue()方法

您需要訪問數組的一個元素(即Class5或它的子類中的一個對象),並調用該getReturnValue()

arrayForClasses[0].getReturnValue() 

的索引可以從0到3(共4種元素)去一個可以使用任一個。你甚至可以訪問所有的人都在一個循環:

for (Class5 elem : arrayForClasses) { // cycles through each element in order 
    elem.getReturnValue(); 
} 
+0

謝謝。這真的有助於另一個剛剛出現的問題! – car