2015-07-22 78 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中新条目的位置。

相关问题