完整的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;
}

对于staticswap(在java中,QuicksortString是一个更好的方法名)来说,让quicksortString方法在不实例化类的情况下调用它们应该是static方法。

10-08 02:58