完整的Java新手,所以请原谅任何愚蠢的错误。我正在做一个更大的作业,但是我被一个快速排序方法卡住了,尽管在过去的几个小时里我一直在玩它,看着它,直到我几乎失明,我似乎无法找出我做错了什么。
我收到一条错误消息“error:method quicksortstring in class testmenu01 cannot be applied to given types”。我知道这与我如何传入参数有关,但我已经尝试并重试,但找不到我的错误。我确信这是一件愚蠢而明显的事情,但却找不到。非常感谢您的帮助,谢谢!
public class testmenu01 {
public static void main(String[] args){
String[] nameArr = {"Anna", "Brad", "Charles", "Debbie", "Emma", "Fergal"};
QuicksortString( nameArr );
}
public void QuicksortString(String [] stringArray, int start, int end) {
int i = start;
int k = end;
if (end - start >= 1) {
String pivot = stringArray[start];
while (k > i) {
while (stringArray[i].compareTo(pivot) <= 0 && i <= end && k > i)
i++;
while (stringArray[k].compareTo(pivot) > 0 && k >= start && k >= i)
k--;
if (k > i)
swap(stringArray, i, k);
}
swap(stringArray, start, k);
QuicksortString(stringArray, start, k - 1);
QuicksortString(stringArray, k + 1, end);
} else { return; }
}
public void swap(String array[], int index1, int index2) {
String temp = array[index1];
array[index1] = array[index2];
array[index2] = temp;
}
}
最佳答案
若要修复错误,请将主方法中的QuicksortString( nameArr );
更改为QuicksortString( nameArr, 0,nameArr.length-1 );
,因为您使用包含三个参数的参数列表定义了此方法:public void QuicksortString(String [] stringArray, int start, int end)
。就像你的递归调用一样。
此外,您最好将return
子句中的else
改为另一行:
else {
return;
}
对于
static
和swap
(在java中,QuicksortString
是一个更好的方法名)来说,让quicksortString
方法在不实例化类的情况下调用它们应该是static
方法。