[英]ArrayList for loop printing out indexes instead of value
我創建了一種方法來讀取文本文件,並從每一行中提取聯系人的姓名。
private ArrayList<String> readContacts()
{
File cFile = new File ("Contacts.txt");
BufferedReader buffer = null;
ArrayList <String> contact = new ArrayList<String>();
try
{
buffer = new BufferedReader (new FileReader (cFile));
String text;
String sep;
while ((sep = buffer.readLine()) != null)
{
String [] name = sep.split (",");
text = name[1];
contact.add(text);
}
}
catch (FileNotFoundException e)
{
}
catch (IOException k)
{
}
return contact;
}
我正在嘗試使用上面創建的方法使用每個聯系人姓名填充一個JList
:
model = new DefaultListModel();
for (int i = 1; i < readContacts().size(); i++)
{
ArrayList <String> name = readContacts();
model.addElement(name);
}
nameList = new JList (model);
add(nameList);
當我運行程序時, JList
僅具有數字1-10,而不是每個聯系人名稱。 我遇到的問題是邏輯問題還是語法問題? 任何幫助將是巨大的,謝謝!
readContacts()
為沒有意義的循環,從內 。 您要創建一個新的ArrayList多次,然后將整個相同的ArrayList添加到JList中,換句話說,JList中的每個元素都是一個ArrayList(???)。 catch(...)
塊。 這樣做相當於在閉着眼睛開車時的編程效果-非常危險。 例如,
model = new DefaultListModel();
// call readContacts() only *once*
for (String name: readContacts()) {
model.addElement(name);
}
我會說我們可以先創建一個ArrayList對象,然后將新的readContacts()分配給該對象。 之后,如果需要,循環讀取元素,可以打印出ArrayList中的每個元素,以確保它們是您想要的。
如果您的程序正在運行,則沒有syntax
問題。 您的程序正在運行,但是沒有給出預期的結果。 這是一個logical
問題。
您聲明:
“ JList僅具有數字1-10,而不是每個聯系人名稱。”
當我查看您的readContacts()
,您會在聯系人List
填充名稱[1]。 名稱是什么[1]? 我相信您在讀文件時name [1]包含1-10。 名稱[0]或名稱[2]或名稱[3](如果它們甚至存在)中的內容。 因此,我的第一個建議是嘗試使用不同的名稱索引,因為name [1]不能給您正確的結果。
其次,使用ArrayList
名稱填充model
,而不使用name的內容。 按照“氣墊船充滿鰻魚”示例填充模型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.