2014-09-01 76 views
2

我需要使用main方法中的數組調用定義類中的方法。使用數組調用另一個類的方法

public class Student{ 
    private String id; 

    public void setId(String id){ 
     this.id=id; 
    } 
    public String getId(){ 
     return id; 
    } 

} 

,並在主,學生這樣的陣列,

public static void main(String[] args){ 
    int numOfStudent=0; 
    Student[] students = new Student[numOfStudent]; 

    students[numOfStudent].setId(JOptionPane.showInputDialog("Enter id:")); 
    numOfStudent++; 

} 

我不斷收到錯誤消息說

"java:6: error: cannot find symbol

students[numOfStudent].setId(JOptionPane.showInputDialog("Enter id:"));

symbol: variable JOptionPane location: class Whatever

1 error "

這裏有什麼問題?

+4

你導入的JOptionPane?它似乎無法解決這個問題。 – Thilo 2014-09-01 04:47:46

+2

另外,請注意數組的長度爲'0'。所以,裏面不會有任何元素。 – Christian 2014-09-01 04:48:36

+1

您確定這是完整的錯誤訊息嗎?請複製並粘貼控制檯的整個輸出。如果您還包含您用於編譯代碼的確切命令,這將有所幫助。 – 2014-09-01 04:53:55

回答

3

編譯器認爲JoptionPane是一個變量(你沒有聲明)。

您需要將該類導入到文件頂部。

此外,你將得到一個ArrayIndexOutOfBoundsException,因爲你的數組長度爲0,所以沒有元素(在索引0或任何其他索引)。

0

那是因爲你與0

Student[] students = new Student[numOfStudent]; 

哪裏numOfStudent是零初始化您的數組。所以當你試圖運行這條線

students[numOfStudent].setId(JOptionPane.showInputDialog("Enter id:")); 

編譯器抱怨,因爲沒有學生在索引0。你的學生陣列是空的。

+0

所以我應該首先添加1到numOfStudent並調用一個方法?例如 – user3373529 2014-09-01 04:52:55

+0

@ user3373529,您可以將學生數組初始化爲100。我可以知道你最先想要達到什麼目標嗎? – lxcky 2014-09-01 04:54:23

+4

這當然是一個邏輯錯誤,但不是OP中編譯器錯誤的原因。 – 2014-09-01 04:54:25

0

爲您解決眼前的問題,你需要在Whatever.java頂部添加import聲明:

import javax.swing.JOptionPane; 

然而,你必須在你的代碼其他幾個問題:

  1. 您分配一個有0個元素的數組。這意味着當你嘗試訪問數組中的一個元素時,你會得到一個ArrayIndexOutOfBoundsException。爲了解決這個問題,更改

    int numOfStudent=0; 
    

    int numOfStudent=100; // or some other number, depending on how many students you want to keep track of 
    
  2. 定影#1之後,你只創建了與空槽陣列。您尚未創建任何Student對象。我建議你閱讀關於創建對象。讓你開始,你可以做這樣的事情,以創建單個Student作爲數組的第一個元素:

    students[0] = new Student();