2015-07-22 33 views
0
import java.util.ArrayList; 
import java.util.Collections; 

public class U3A4_CDCollection extends javax.swing.JFrame { 

    private ArrayList<String> strArray; 

    public U3A4_CDCollection() { 
     initComponents(); 

    private void btnInitializeActionPerformed(java.awt.event.ActionEvent evt) {            
     btnAdd.setEnabled(true); 
     btnRemove.setEnabled(true); 

     strArray = new ArrayList(); 
     strArray.add("Calvin Harris - Overdrive(Part 2)"); 
     strArray.add("DVBBS & Borgeous - TSUNAMI"); 
     strArray.add("Martin Garrix - Tremor"); 
     strArray.add("Martin Garrix - Animals"); 
     strArray.add("Firebeatz - Max Ammo"); 

     Collections.sort(strArray); 
     for(int i = 0; i < strArray.size(); i++){ 
      this.txtAreaOutput.append("\n" + strArray.get(i)); 
     } 
     btnInitialize.setEnabled(false);   
    }            
    private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {          
     strArray.add(this.txtInputName.getText()); 
     System.out.println(strArray); 

     Collections.sort(strArray); 
     this.txtAreaOutput.append("\n" + strArray.get(strArray.size()-1)); 
    }          

    private void btnRemoveActionPerformed(java.awt.event.ActionEvent evt) {           
     strArray.remove(this.txtInputName.getText()); 
     String strBadSong = this.txtInputName.getText(); 
     for (int i = 0; i < strArray.size()-1; i++){       
      if (strBadSong.equals(strArray.get(i))){ 
       strArray.remove(this.txtInputName.getText()); 
      } 
     } 
     Collections.sort(strArray); 
     this.txtAreaOutput.setText(" "); 
     for (int i = 0; i < strArray.size(); i++){ 
      this.txtAreaOutput.append("\n" + strArray.get(i)); 
     } 
    }           

我主要需要關於如何正確使用Collections.sort()方法的幫助。有什麼我失蹤或把他們放在錯誤的地方?我試圖把它放在不同的地方,但我還沒有弄明白。任何幫助將非常感激!如何使我的數組使用Collections.sort()進行Alphebetically排序? -Java

+0

*什麼*也不行,到底是什麼? – duplode

+0

當我嘗試運行它時,添加和刪除按鈕不按字母順序輸出字符串 –

+0

歡迎使用stackoverflow。只需訪問我們的[旅遊](http://stackoverflow.com/tour)頁面以獲取更多信息以使用本網站。 –

回答

1

你的問題是當你從圖形用戶界面輸入一個新的字符串,然後點擊添加,輸出不正確的順序?我認爲這是由您的btnAddActionPerformed()中的邏輯錯誤引起的。 你這樣做:

Get the new string from the textfield 
Add the new string into ArrayList 
Sort the List 
Add the last String from the List to the output 

然而,最後一個字符串是不是新的字符串。
這是我認爲你應該做的:

Get the new string 
Add the new string into the list 
Sort this list 
Clear the txtAreaOutput 
Print the whole List into the textAreaOutput again. 


private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {          
     strArray.add(this.txtInputName.getText()); 
     System.out.println(strArray); 
     Collections.sort(strArray); 
     this.txtAreaOutput.setText(""); 
     for(int i = 0; i < strArray.size(); i++){ 
      this.txtAreaOutput.append("\n" + strArray.get(i)); 
     } 
    } 
+0

謝謝你的工作!我不知道爲什麼我想到這樣做的刪除按鈕,但不是添加按鈕... –

+0

嘿,你介意幫助我與另一個問題? –

+0

好的,這是關於什麼的? –

0

add方法的問題在於,只能將數組的最後一項追加到輸出文本區域。您應該清空並重新填充文本區域,因爲在數組排序後,您不知道strarray中新條目的位置。

相關問題