0

我写了一个排序函数,它可以对所有内容进行排序,但是如果两个单词之间有空格,它会将空格排序到开头并删除最后一个字符串元素,为什么会这样?我尝试了 String.trim() 方法来消除空格,但它没有用,我需要帮助

private void SortStringsActionPerformed(java.awt.event.ActionEvent evt) {                                            
         // TODO add your handling code here:
         String str = TextArea.getText();

     String[] words = str.split(" ");

        int length = words.length;
    String temp; 
    for(int i=0; i<=length-1; i++){
            for(int j=0; j <length-1;j++){
            if(words[i].compareToIgnoreCase(words[j]) == 0 ){}
            else if (words[i].compareToIgnoreCase(words[j]) < 0){   
                                temp = words[i].trim();
                words[i] = words[j].trim();
                words[j] = temp;
            }else{} 
        }
    }
        /*
    String str2="";
    for (int i=0; i < length-1; i++) {
            str2+=words[i]+" ";
        }
        */
        StringBuilder str2 = new StringBuilder();
        for(int i=0; i<length-1; i++) {
            str2.append(words[i]).append(" ");
        }
        TextArea.setText(str2.toString());

    }                            
4

3 回答 3

1

首先,最好不要使用for(int i=0; i<=length-1; i++),而是for(int i = 0; i < length; i++).

这也是你最后一个元素被删除的原因 - 你已经使用for(int i=0; i<length-1; i++)而不是for(int i=0; i<length; i++)

编辑:并禁用您可以使用的空格:TextArea.setText(str2.toString().trim());

于 2013-01-22T12:27:01.400 回答
1

如果你想对“任何”进行排序,只需使用 java.utils.Collections 类。它为实现 Comparable 的元素提供了排序方法:

static <T extends Comparable<? super T>> void sort(List<T> list)

或者您可以指定自己的比较器:

static <T> void sort(List<T> list, Comparator<? super T> c)

这比编写和调试自己的排序代码更容易。

这是一个例子:http ://www.vogella.com/blog/2009/08/04/collections-sort-java/

于 2013-01-22T11:16:48.910 回答
0

没有必要重新发明轮子

于 2013-01-22T11:17:42.913 回答