2015-06-04 91 views
0

我的問題很簡單,但我找不到解決問題的方法。基本上我想創建一個Arraylist並使用一個循環向它添加元素(達到我想要的最多元素)。我使用的是NetBeans GUI,每當我按下按鈕「添加」我想添加字符串變量名稱和資本到我的數組列表並顯示它在TextArea中。 類似:使用循環向arraylist添加元素

[london, england,america,united states etc..] 

到目前爲止,它的唯一的事情就是打印兩個變量名和資本很多次這樣的:

[londonn, england, london, england etc..] 

這裏是代碼:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    String name, capital; 
    ArrayList<String> input = new ArrayList<>(); 
    name = jTextField1.getText(); 
    capital = jTextField2.getText(); 
    for(int i=0;i < 10;i++) { 
     input.add(name); 
     input.add(capital); 
     jTextArea4.setText(String.valueOf(input)); 
    }  
} 
+0

您需要刪除的for循環。由於這個循環,你存儲10次相同的值。 – user1728310

回答

0

如果你是如果您想讓您的ArrayList持續增長,那麼您需要將其設爲類變量而不是本地變量jButton1ActionPerformed

也取出for循環。當你添加一個新的名字和大寫字母時,你只需要做一次。

事情是這樣的:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    // Make sure input is a class variable and it will continue to grow           
    input.add(jTextField1.getText()); 
    input.add(jTextField2.getText()); 
    jTextArea4.setText(String.valueOf(input));  
} 

一旦你的ArrayList是一個類變量,你會想辦法加以清除,ArrayList或從中刪除項目。

+0

謝謝你這個作品。 – user3732562

+0

@ user3732562不客氣。請點擊複選標記來回答我的問題,除非Jordan Doerksen的回答真正解決了您的問題。 – Shar1er80

0

試移動jTextArea4.setText(String.valueOf(input))以外for loop

0

你需要記住以下代碼外循環:

jTextArea4.setText(String.valueOf(input)); 
+0

這是錯誤的,因爲aaraylist包含10個元素。即使你用這個文本框也會打印所有的10個元素。 – RajSharma

0

你必須監守你存儲相同的值超過一次刪除的循環。

你可以這樣做。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
String name, capital; 
ArrayList<String> input = new ArrayList<>(); 
name = jTextField1.getText(); 
capital = jTextField2.getText(); 
    input.add(name); 
    input.add(capital); 
    jTextArea4.setText(String.valueOf(input)); 

}

這裏從文本字段和stroing獲取名稱和資本價值在進入ArrayList中,然後顯示在格蘭文字欄ArrayList中的值..

,如果你想要添加儘可能多的元素,但是當您設置jtextField4時,您必須從輸入數組列表中獲取最後一個元素,因爲數組列表對象包含10個stings。

這樣

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
String name, capital; 
ArrayList<String> input = new ArrayList<>(); 
name = jTextField1.getText(); 
capital = jTextField2.getText(); 
for(int i=0;i < 10;i++) { 
    input.add(name); 
    input.add(capital); 
    jTextArea4.setText(String.valueOf(input.get(input.size))); 
}  

}

我希望這會幫助你。

+0

是的,謝謝你,所有的答案都非常有幫助。 – user3732562

0

完全去除循環。如果你想要一個ArrayList中是有用的,你必須讓一個類級別的變量

ArrayList<String> input = new ArrayList<>(); 

private void jButton1ActionPerformed(ActionEvent evt) {           
String name, capital; 
name = jTextField1.getText(); 
capital = jTextField2.getText(); 
    input.add(name); 
    input.add(capital); 
    jTextArea4.setText(String.valueOf(input)); 

}

+0

您剛剛複製我的答案,並且每次此事件觸發時都會重新實例化ArrayList,從而阻止它增長。 – Shar1er80

+0

對不起。在我提交任何答案之前,我開始打字,然後分心。在移動應用程序中,當您輸入內容時,您看不到其他人是否發佈了答案 –

相關問題