【发布时间】:2018-02-15 07:14:45
【问题描述】:
首先让我说,我知道有更好的方法来排序你可能使用数组以外的东西。这是一个类的分配,用户可以将字符串存储在数组中,删除、显示和排序它们。我完全不知道从这里去哪里。我正在尝试使用冒泡排序,一切正常,除了我的数组中的第一个条目不会排序。我通过过滤掉空值来避免空指针异常,这就是我的 if 语句这么长的原因。
private void sortItems(String[] cargohold) {
String temp;
for (int i = 0; i < cargohold.length - 1; i++) {
for (int j = 1; j < cargohold.length; j++) {
if (cargohold[i] != null && cargohold[j] != null && (cargohold[i].compareTo(cargohold[j]) < 0)) {
temp = cargohold[j];
cargohold[j] = cargohold[i];
cargohold[i] = temp;
}
}
}
}
我尝试了很多不同的方法来做到这一点,但我找不到任何很好的理由说明这不应该奏效。就示例而言,我已经查看了在 Stack Overflow 上可以找到的所有内容,没有人遇到与我相同的问题。
回顾一下,我可能有 5 个字符串,“Derp”、“Herp”、“Sam”、“Alfred”、“Bill”,这种排序会给我:“Derp”、“Alfred”、“Bill”、 “赫普”,“山姆”。提前感谢您的指导。
【问题讨论】:
-
首先这不是冒泡排序,而是第一个问题
-
@WIR3D 你应该解释为什么它不是。冒泡排序的内部循环通常从
i + 1开始,而不是1。顺便说一句:请在类型之后写数组括号,而不是变量(String[] cargohold而不是String cargohold[])。
标签: java arrays string sorting bubble-sort