所以我是Java的初学者,并且正在从一本书中解决问题:
编写一个程序,设置一个字符串变量,其中包含您选择的一段文本。从文本中提取单词并将它们按字母顺序排序。显示排序的单词列表。您可以使用一种称为冒泡排序的简单排序方法。要将数组按升序排序,过程如下: a.从数组中的第一个元素开始,比较连续的元素(0 和 1、1 和 2、2 和 3,依此类推)。湾。如果任何对的第一个元素大于第二个元素,则交换这两个元素。C。对整个阵列重复该过程,直到不需要交换为止。数组元素现在按升序排列。
我的解决方案是:
public class bubbleSort {
public static void main(String[] args) {
String Homer = "He was the son of Epikaste and Telemachus. " +
"He was said to be a court singer ";
String swap;
Homer = Homer.replace(',', ' ');
Homer = Homer.replace('.', ' ');
Homer = Homer.replace(" ", " ");
String[] words = Homer.split(" ");
for(String val:words){
System.out.println(val);
}
System.out.println(" ---- SORTED -------");
boolean exchange = true;
while (exchange) {
exchange = false;
for (int i = 0; i < (words.length - 1); ++i) {
if (words[i].charAt(0) > words[i + 1].charAt(0)) {
swap = words[i];
words[i] = words[i + 1];
words[i + 1] = swap;
exchange = true;
}
}
}
for(String val:words){
System.out.println(val);
}
}
}
然而,排序后的输出并不像预期的那样!
他是 Epikaste 和 Telemachus 的儿子,据说他是一名宫廷歌手 ---- SORETED ------- Epikaste He He Telemachus 和一个儿子的法庭说歌手是
我在哪里犯了错误?谢谢 !