我编写了一个排序函数,它可以对所有内容进行排序,但是如果两个单词之间有空格,它会将空格排序到开头并删除最后一个字符串元素为什么会发生这种情况?我尝试使用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());
}
答案 0 :(得分: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/
答案 1 :(得分: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());
答案 2 :(得分:0)