完整的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;
}
}
答案 0 :(得分:0)
为解决错误,将主方法中的col-lg-6
更改为class ClassA {
constructor() {
this.stringA = "Hello"
this.objB = new ClassB();
this.objC = new ClassC();
}
functionA() {
this.objB.functionB(this.stringA);
this.objC.functionC(this.objB.intB);
}
}
class ClassC {
constructor() {}
functionC(intB) {
console.log(intB);
}
}
class ClassB {
constructor() {
this.intB = 10;
}
functionB(stringA) {
console.log(stringA);
}
}
,因为您使用三个参数的参数列表定义了此方法: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
在不实例化类的情况下调用它们。