在下面的代码中,我尝试将 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/