2013-03-29 20 views
-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「,我不明白這意味着什麼,我是否錯過了某些內容?

回答

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

由於你的方法是靜態的,你應該這樣調用。

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

minHeapify屬於MinHeapify類而不是ReservationArray,因此誤差的方法。作爲其static,你可以使用:

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

或者,你可以使用一個static進口:

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

並使用當前不合格的方法調用符號。

1

添加返回類型它

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

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

好minHeapify是一個方法是類MinHeapify。除非使用對MinHeapify的引用來訪問它,否則不能在類ReservationArray中訪問它。

相關問題