2011-02-07 65 views
-1

Possible Duplicate:
Exception in thread 「main」 java.lang.NoSuchMethodError: mainjava.lang.NoSuchMethodError:主要的例外在線程 「主要」

我的主要語法是正確的。還有什麼可能是這個問題?

public class BuildHeap 
{  
    int a[]={1,2,6,3,5,1,7,8,4,9}; 

    public void build() 
    { 
     for(int i=5;i<=1;i--) 
     { 
     heapify(a,i); 
     } 
    } 

    public void heapify(int a[],int i) 
    { 
    System.out.print("hello"); 
    int j,temp,rchild,lchild; 
    if(i<5) 
    { 
     if(2*i<5) 
      lchild=a[(2*i)+1]; 
     if((2*i)+1<4) 
      rchild=a[(2*i)+2]; 

     if(lchild>rchild) 
      j=(2*i)+1; 
     else 
      j=(2*i)+2; 

     if(a[i]<a[j]) 
     { 
      temp=a[i]; 
      a[i]=a[j]; 
      a[j]=temp; 
      heapify(a,j); 

}} }

class Heap 
{ 
    public static void main(String[] args) 
    { 
     BuildHeap bh=new BuildHeap(); 
     bh.build(); 
     for(int i=0;i<10;i++) 
      System.out.print(bh.a[i]+" "); 
    } 
} 
+1

您是否試圖將`Heap`或`BuildHeap`作爲主類運行? `BuildHeap`沒有`main`,這可能會導致這個問題。另外,`Heap`沒有標記爲`public`,這可能與此有關。 – templatetypedef 2011-02-07 02:18:36

+0

此社區Wiki問題列出了此常見問題的可能原因:http://stackoverflow.com/questions/5407250/causes-of-java-lang-nosuchmethoderror-main-exception-in-thread-main – 2011-06-28 14:39:45

回答

1

最可能的原因應該是你的類名和文件名亙古不變的匹配。 創建一個包含Heap類的新文件,並將文件名作爲Heap.java。 將BuildHeap類保存在同一個包中的不同文件中。運行堆。它應該工作。 否則請從公共類更改BuildHeap類並將Heap類設爲公共類。

更好的辦法是將不同文件中的類分開。

3

您需要將主要方法放在公共類BuildHeap(不是包私有類Heap)。或者,也許你只是在命令行上指定了錯誤的類名稱。再次,主要在Heap,而不是BuildHeap

相關問題