对数组字符串进行排序的Java程序 公共类应用程序{ 公共静态void main(字符串[]args){ getWords(“我非常非常高兴”); } 私有静态树集getWords(String str){ 字符a[]=str.toCharArray(); 字符串smallWords=“”; List words=new ArrayList(); for(int i=0;i
在上面的代码中,我能够用按字符串数组排序的每个单词对正确的输出进行编码,但我的输出是[ervy,I,m],其中缺少最后一个单词happy。有人能告诉我必须使用什么逻辑,这样数组的最后一个字也应该反映在我的输出中。正如@sprinter所评论的:“向字添加sortedString的代码只有在字符串中有空格时才会执行。如果字符串末尾没有空格,就永远不会执行最后一个字。” 解决这个问题的一个方法是将对数组字符串进行排序的Java程序 公共类应用程序{ 公共静态void main(字符串[]args){ getWords(“我非常非常高兴”); } 私有静态树集getWords(String str){ 字符a[]=str.toCharArray(); 字符串smallWords=“”; List words=new ArrayList(); for(int i=0;i,java,string,algorithm,sorting,collections,Java,String,Algorithm,Sorting,Collections,在上面的代码中,我能够用按字符串数组排序的每个单词对正确的输出进行编码,但我的输出是[ervy,I,m],其中缺少最后一个单词happy。有人能告诉我必须使用什么逻辑,这样数组的最后一个字也应该反映在我的输出中。正如@sprinter所评论的:“向字添加sortedString的代码只有在字符串中有空格时才会执行。如果字符串末尾没有空格,就永远不会执行最后一个字。” 解决这个问题的一个方法是将if语句分解为处理空格的部分和处理单词的部分: public class App { publ
if
语句分解为处理空格的部分和处理单词的部分:
public class App {
public static void main(String[] args) {
getWords("i m very very happy");
}
private static TreeSet<String> getWords(String str) {
char a[] = str.toCharArray();
String smallWords = "";
List<String> words = new ArrayList<>();
for (int i = 0; i < a.length; i++) {
if (a[i] != ' ') {
smallWords = smallWords + a[i];
} else {
char sortedA[] = smallWords.toCharArray();
Arrays.sort(sortedA);
String sortedString = new String(sortedA);
words.add(sortedString);
smallWords = "";
}
}
System.out.println("words :: " + words);
TreeSet<String> sortedWords = new TreeSet<>(words);
System.out.println("sortedWords :: " + sortedWords);
return sortedWords;
}
}
for(int i=0;i
结果:
单词::[i,m,ervy,ervy,ahppy]分类词::[ahppy,ervy,i,m]
将
sortedString
添加到words
的代码仅在到达字符串中的空格时执行。由于字符串末尾没有空格,因此不会为最后一个单词执行。请包含正确的导入语句。如果我可以将它粘贴到调试器中,并在不调试导入的情况下到达您所在的位置,那么帮助您就容易多了。在学习编写程序的同时,学习编程工具也同样重要。查看IDE的调试功能,并单步完成程序。观察你的变量,你肯定会发现哪里出了问题。你可以使用and来查找单词分隔符,并使用and将它们的内容复制到字符数组中,而不是在所有字符上循环并生成新字符串,只是为了对它们调用tocharray()
。
for (int i=0; i < a.length; i++) {
// if not space add to smallWords
if (a[i] != ' ') {
smallWords = smallWords + a[i];
}
// if space or last character, process smallWords
if (a[i] == ' ' || i==a.length-1) {
char sortedA[] = smallWords.toCharArray();
Arrays.sort(sortedA);
String sortedString = new String(sortedA);
words.add(sortedString);
smallWords = "";
}
}