2010-04-23 44 views
2

我知道標題聽起來令人困惑,這是因爲它。它有點長,所以嘗試也留在我身邊。傳遞數組到構造函數使用JList

這是佈局,我有我的代碼設計

變量 構造 方法。

即時通訊也試圖填寫一個Jlist全名。我也想用一種方法獲得這些名字。所以在這裏。

在我的變量我有我的JList。其名爲contactNames; 我也有一個數組存儲5個字符串,這是聯繫人的名字; 繼承人的代碼無論如何

String contact1; 
String contact2; 
String contact3; 
String contact4; 
String contact5; 

String[] contactListNames; 

JList contactList; 

夠簡單。然後在我的構造我有JList的定義與陣列

String[] contactListNames = new String[5]; 
    JList contactList = new JList(contactListNames); 
    fillContactList(); 

該方法fillContactList()即將更新了的內容來填充本身。

現在繼承人的東西變得球。 ive創建了三種不同的方法,所有這些方法都沒有奏效。基本上我試圖用所有這些來填充陣列。 這是最簡單的一個。它沒有設置Jlist,它不會做任何事情。所有它trys過於做是一次填充陣列一點

public void fillContactList() 
     { 
      for(int i = 0;i<3;i++) 
      { 
       try 
       { 
        String contact; 
        System.out.println(" please fill the list at index "+ i); 
        Scanner in = new Scanner(System.in); 
        contact = in.next(); 
        contactListNames[i] = contact; 
        in.nextLine(); 
       } 
       catch(Exception e) 
       { 
       e.printStackTrace(); 
       } 
      } 
     } 

不幸的是這不qwork。我得到打印出來填充索引0;我輸入的東西,我得到一個漂亮的大堆棧跟蹤開始

contactListNames[i] = contact; 

所以我在短的問題是

爲什麼不能填補我從法陣。

****************************************** * 888 *********************** 888通過要求

堆棧跟蹤信息請填寫列表索引0

overtone 
please fill the list at index 1 
java.lang.NullPointerException 
at project.AdminMessages.fillContactList(AdminMessages.java:410) 
at project.AdminMessages.<init>(AdminMessages.java:91) 
at project.AdminUser.createAdminMessages(AdminUser.java:32) 
at project.AdminUser.<init>(AdminUser.java:18) 
at project.AdminUser.main(AdminUser.java:47) 
+0

要回答你的第一個問題:是的,你可以傳遞一個數組一個JList的構造。你只需要修正數組的初始化,就像@Jeff在下面提出的那樣。 – Ash 2010-04-23 13:11:07

回答

2

要在構造函數中,你可以做這些方針的東西定義數組,

// if values are predefined, you can explicitly fill the array 
String[] contacts = {"Bill Gates", "Steve Jobs", "Jon Skeet"}; 

// or this way, both will work. 
String[] contacts = new String[2]; 

看着JList from the Java Doc's你可以在陣列中肯定傳遞給JList

String[] data = {"one", "two", "three", "four"}; 
JList dataList = new JList(data); 

你得到NullPointerException因爲數組contactListNames未初始化,所以需要初始化它。

+0

好吧,我在構造函數中初始化了它,並且改變了問題中的代碼以匹配它現在的樣子。不幸的是我仍然得到這個錯誤。 我應該初始化它在我的變量或構造函數? – OVERTONE 2010-04-23 13:17:23

+0

它可能對您的'fillContactList'方法不可見,請在您的類聲明中初始化該方法內的數組,即在該類的下方,即public class MyClass'並查看會發生什麼。 – 2010-04-23 13:21:39

+0

是的!你壯觀的天才!在構造函數之外定義它作爲集合的大小完美工作。 現在我得把它使用SQL的.. 再次感謝隊友, – OVERTONE 2010-04-23 13:25:23

1

您在構造函數中定義數組就像你會任何其他變量。所以,它看起來像這樣:

// define an array of size 3 
String[] contactListNames = new String[3]; 

你得到異常的原因是因爲你實際上沒有初始化數組。你聲明它,但你從來沒有設置它的值(或給它一個大小)。你應該發佈錯誤的堆棧跟蹤,但我懷疑這是一個NullPointerException。

0

然後在我的構造函數中我有 的jList定義的數組的 內容來填補自身

String[] contactListNames = new String[5]; 
JList contactList = new JList(contactListNames); 
fillContactList(); 

你在做什麼在這裏創造了新的局部變量被遮蔽的在你的班級中定義的人。 將其更改爲:

contactListNames = new String[5]; 
contactList = new JList(contactListNames); 
fillContactList(); 
相關問題