2013-03-29 31 views
1

我寫了一個代碼,應該採取一個數組,並將其從最小值到最大值排序,但我得到一個錯誤。這是代碼我的程序告訴我,我的方法對於我的類型沒有定義,這是什麼意思?

public class minHeapify{ 
    public static void exchange(int a[],int i,int j) { 
     int 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 minHeapify(int a[], int start,int end) { 
     int l = left(start); int r = right(start); 
     int smallest; 
     if(l >= end){ 
      smallest = (a[l] < a[start])? l: start; 
     } 
     if(r >= end){ 
      smallest = (a[r] < a[smallest])? r: smallest; 
     } 
     if(smallest != start) { 
      exchange(a,start,smallest); 
      minHeapify(a,smallest,end); 
     } 
    } 
} 

,我得到的是錯誤「的方法minHeapify(INT [],INT,INT)是未定義的類型minHeapify」和林不知道這意味着什麼。

回答

2

問題是該方法與該類具有相同的名稱並且沒有返回類型。因此,從編譯器的角度來看,它是一個構造函數而不是一個普通的方法。而一個構造函數不能以你的方法嘗試的方式調用自己。

重命名該方法並添加返回類型。如果該方法需要在構建時自動調用,只需從構造函數調用它即可。

1

Java認爲public minHeapify(int a[], int start,int end)是一個構造函數,而不是一個正常的方法。你可以通過尊重類名大寫的約定來解決它:public class MinHeapify

相關問題