我希望这些数据按名称排序,我使用以下代码,有人可以告诉我它有什么问题吗?它没有完美地对数据进行排序。
条件是我们必须使用两个while和if循环。
Sales and Commission
======================================================
Salesperson Sales Amount Commission
-----------------------------------------------------
h h $54000 $4320.0
jghu jghf $90000 $9000.0
hg gf $45000 $2700.0
kaushal garg $87000 $8700.0
kfhfuyd dhd $32000 $1920.0
Total: 9 Data entries
代码:
public static void sortByName() {
int small; // Two while loop and one if loop for sorting
int i = 0; // the data based on sales amount
while (i < name.length) {
small = i;
int index = i + 1;
while (index < name.length) {
if (name[index].compareToIgnoreCase(name[small]) < 0) { // name comparision for sorting
small = index;
}
swap(i, small); // caling the swap method
index++;
}
i++;
}
displayData(); // calling displayData function.
}
//Method used in the sorting the data based on name and sales
public static void swap(int first, int second) {
String temp = name[first];
name[first] = name[second];
name[second] = temp;
}
答案 0 :(得分:0)
我认为问题是内循环中的交换函数,因为它将始终执行。也许它应该发生在if范围内(根据compareToIgnoreCase()的函数返回,不太确定)。
while (index < name.length) {
if (name[index].compareToIgnoreCase(name[small]) < 0) { // name comparision for sorting
small = index;
swap(i, small); // caling the swap method
}
index++;
}
答案 1 :(得分:0)
您似乎正在尝试实施冒泡排序。首先,没有&#34; if-loop&#34;这是一个if条件。我发现你的变量名很混乱,所以我重命名了它们中的大多数。以下代码应该可以使用。
public static void sortByName() {
int i = 1;
while (i < name.length) {
int j = 0;
while (j < name.length - i) {
if (name[j].compareToIgnoreCase(name[j + 1]) > 0) {
//you should be able to figure out yourself, what to do here
}
j++;
}
i++;
}
displayData();
}