java - 有没有一种方法可以在java中按字母顺序对字符串进行排序,而无需将字符串放入数组中?

标签 java arrays string char alphabet

在下面的代码中,我尝试将 i 处的字符与 i+1 处的字符进行比较。我的理解是,通过使用 charAt(): 我可以从字符串中取出字符并将其视为整数,并能够比较两个字符。这部分代码有效,但我认为我在代码中遗漏了一些内容,因此它没有打印所需的结果。除非这种对字符串中的字符进行排序的方法无效。

public class stringAlphabetical {

    public static void main(String[] args){
        String word="watch";
        boolean swapped;
        char temp = ' ';
        do{
            swapped = false;
            for(int i=0;i<word.length()-1;i++){
                char a = word.charAt(i);
                char b = word.charAt(i+1);

                if(word.charAt(i)>word.charAt(i+1)){   // if (a>b) {
                   temp = a;
                   a = b;
                   b = temp;
                }
            }


        }while (swapped==true);

        System.out.println(word);
    }
}

最佳答案

Java String不可变,因此您需要使用可变类(如StringBuilder) - (此外,您正在修改 char 值,而不是引用),并且您不需要 t

StringBuilder word = new StringBuilder("watch");
boolean swapped;
do {
    swapped = false;
    for (int i = 0; i < word.length() - 1; i++) {
        char a = word.charAt(i), b = word.charAt(i + 1);

        if (a > b) { // <-- this is fine.
            word.setCharAt(i, b);
            word.setCharAt(i + 1, a);
            swapped = true;
        }
    }
} while (swapped);
System.out.println(word);

哪些输出

atchw

或者只使用数组(获得相同的结果)

String word = "watch";
char[] c = word.toCharArray();
Arrays.sort(c);
System.out.println(new String(c));

关于java - 有没有一种方法可以在java中按字母顺序对字符串进行排序,而无需将字符串放入数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44856634/

相关文章:

c - C 数组中的指针地址

ios - 检查 Jsonobject 的 Int

java - 在控制台中运行 Jar

java - 如何使用Firestore向文档中的 HashMap 数组添加数据?

php - 如果在数组和数据库中

Javascript - 使用 onClick 函数突出显示字符串中的特定文本

java - 用 Java 写回单词

java - 如果用户点击 JOptionPane.showMessageDialog 顶角的 x,则返回

Java 泛型 : Array Casting

python - 跟踪Python元组中值的增量和减量