繁体   English   中英

请我在这段代码中做错了什么

[英]Please what am i doing wrong in this code

我写了一个排序功能,它可以对所有内容进行排序,但是如果两个单词之间有一个空格,它会将空格排序到开头并删除最后一个字符串元素,这是为什么呢? 我试过了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());

    }                            

如果要对“任何”进行排序,只需使用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/

首先,最好不要使用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());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM