在下面的代码中,我尝试将i处的char与i + 1处的char进行比较。我的理解是通过使用charAt():我可以从字符串中取出字符并将其视为整数,并能够比较两个字符。这部分代码可以工作,但我认为我在代码中遗漏了一些东西,因此它没有打印出所需的结果。除非这种对String中的字符进行排序的方式无效。
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);
}
}
答案 0 :(得分:2)
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));
答案 1 :(得分:2)
使用此代码按字母顺序对String数组进行排序,而不存储在任何数组中
Scanner kbd = new Scanner(System.in);
String input = kbd.nextLine();
String sortedString = Stream.of(input.split("")).sorted().collect(Collectors.joining());
System.out.print(sortedString);
答案 2 :(得分:0)
要按字母顺序对字符串进行排序,您需要将每个字符与所有字符进行比较,如果条件满足,则交换字符。 这是使用多个循环显示的。最后我打印了char数组。
public static void main(String[] args){
String watchString = "watch";
int j;
char temp;
char[] chars = watchString.toCharArray();
for (int i = 0; i <chars.length; i++) {
for ( j = 0; j < chars.length; j++) {
if(chars[j]>chars[i]){
temp=chars[i];
chars[i]=chars[j];
chars[j]=temp;
}
}
}
for(int k=0;k<chars.length;k++){
System.out.print(chars[k]);
}
}