-4

ここにJavaで書かれた2つのクラスがあります

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);

}

コンパイルしようとしたときに発生するエラーは、「メソッド minHeapify(java.lang.String[], int, int) はタイプ ReservationArray に対して定義されていません」であり、それが何を意味するのかわかりません。何か不足していますか?

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

戻り値の型を追加します

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

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

メソッドはではなくクラスminHeapifyに属しているため、エラーが発生します。として、次を使用できます。MinHeapifyReservationArraystatic

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

または、staticインポートを使用できます。

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

そして、現在の非修飾メソッド呼び出し表記を使用します。

于 2013-03-29T17:31:54.337 に答える
0

さて、minHeapify はメソッドであり、クラス MinHeapify です。MinHeapify への参照を使用してアクセスしない限り、クラス ReservationArray でアクセスすることはできません。

于 2013-03-29T17:33:49.413 に答える