对数组字符串进行排序的Java程序 公共类应用程序{ 公共静态void main(字符串[]args){ getWords(“我非常非常高兴”); } 私有静态树集getWords(String str){ 字符a[]=str.toCharArray(); 字符串smallWords=“”; List words=new ArrayList(); for(int i=0;i

对数组字符串进行排序的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

在上面的代码中,我能够用按字符串数组排序的每个单词对正确的输出进行编码,但我的输出是[ervy,I,m],其中缺少最后一个单词happy。有人能告诉我必须使用什么逻辑,这样数组的最后一个字也应该反映在我的输出中。

正如@sprinter所评论的:“向字添加sortedString的代码只有在字符串中有空格时才会执行。如果字符串末尾没有空格,就永远不会执行最后一个字。”

解决这个问题的一个方法是将
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 = "";
    }
}