【问题标题】:Quicksorting a string array in Java?在Java中快速排序字符串数组?
【发布时间】:2019-06-01 09:12:07
【问题描述】:

完整的Java新手所以请原谅任何愚蠢的错误。我正在处理一项更大的任务,但一直坚持使用快速排序方法,尽管在过去的几个小时里一直在玩它并且看着它直到我几乎失明,我似乎无法弄清楚我在哪里出错了。

我收到一条错误消息“错误:类 testmenu01 中的方法 QuicksortString 不能应用于给定类型”。我知道这与我传递参数的方式有关,但我已经尝试并重试了,但找不到我的错误。我敢肯定它的一些愚蠢和明显的东西,但找不到它。非常感谢任何帮助,谢谢!

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 方法说“给我三个参数”,第一个是字符串数组,第二个是开始 (int),第三个是结束 (int)。到目前为止,您只传递了字符串数组。此外,它必须是 static 才能在 main 方法中调用,否则您需要创建一个实例然后调用该方法。
  • 顺便说一句,请确保您遵守标准的 Java 命名约定:方法名称必须以小写字母开头。以大写开头的名称只能用于类型(类、接口、枚举)。
  • cmets 中的一些好技巧。另一个提示:使用带有(例如)语法高亮的 IDE/编辑器会很有帮助。这类错误通常会被清楚地标记出来。

标签: java arrays string quicksort


【解决方案1】:

要修复此错误,请将 main 方法中的 QuicksortString( nameArr ); 更改为 QuicksortString( nameArr, 0,nameArr.length-1 );,因为您使用三个参数的参数列表定义了此方法:public void QuicksortString(String [] stringArray, int start, int end)。就像你的递归调用一样。

另外,您最好将else子句中的return换成另一行:

else { 
    return; 
}

对于swapQuicksortStringquicksortString是java中更好的方法名)应该是static方法,让static方法main在不实例化类的情况下调用它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多