-4

我在这里有 2 个用 java 编写的类

public class MinHeapify{
public MinHeapify(String a[], int start, int end){
minHeapify(a,start,end);
}
public static void exchange(String a[],int i,int j) {
String temp = a[i];
a[i] = a[j];
a[j] = temp;
}
public static int parent(int i) {
return (int) Math.floor((i - 1)/2);
}
public static int left(int i) {
return 2*i + 1;
}
public static int right(int i) {
return 2*(i+1);
}
public static void minHeapify(String a[], int start,int end) {
int l = left(start); int r = right(start);
int smallest=0;
if(l >= end){
  smallest = (l < start)? l: start;
}
if(r >= end){
  smallest = (r < smallest)? r: smallest;
}
if(smallest != start) {
  exchange(a,start,smallest);
  minHeapify(a,smallest,end);
}
}
}


import java.util.Scanner;

public class ReservationArray{
private String [] array = new String [50];

public ReservationArray(String [] arg){
int next = 0;
int next2 = 0;
while(arg[++next]!= null){
  if(next != arg.length){
    arg[next] = array[next2];
    next = next++;
    next2 = next2++;
  }
  else if(next == array.length && next!= arg.length){
    String [] temp = new String[2*array.length+1];
    for(int i=0; i<next; i++){
      temp[i] = array[i];
      array = temp;
      temp = null;
    }
  } else{
    if(next < (array.length/2)-1){
      String [] temp = new String[1/2*array.length-1];
    for(int i=0; i<next; i++){
      temp[i] = array[i];
      array = temp;
      temp = null;
    }
    }
  }
}
minHeapify(array, 0, array.length-1);

}

当我尝试编译它时出现的错误是“对于类型 ReservationArray,方法 minHeapify(java.lang.String[], int, int) 是未定义的”,我不明白这是什么意思,我错过了什么吗?

4

4 回答 4

2
MinHeapify mh = new MinHeapify();
mh.minHeapify(array, 0, array.length-1);

由于您的方法是静态的,因此您应该这样调用。

MinHeapify.(array, 0, array.length-1);
于 2013-03-29T17:31:36.997 回答
1

该方法minHeapify属于MinHeapify类而不是ReservationArray,因此是错误的。作为它static,您可以使用:

MinHeapify.minHeapify(array, 0, array.length - 1);

或者,您可以使用static导入:

import static com.your.package.MinHeapify.minHeapify;

并使用当前不合格的方法调用表示法。

于 2013-03-29T17:31:54.337 回答
1

将返回类型添加到它

public void MinHeapify(String a[], int start, int end)

MinHeapify.minHeapify(array, 0, array.length - 1);
于 2013-03-29T17:32:01.493 回答
0

那么minHeapify是一个方法就是MinHeapify类。除非您使用对 MinHeapify 的引用来访问它,否则您无法在类 ReservationArray 中访问它。

于 2013-03-29T17:33:49.413 回答