2011-02-07 12 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

+0

このコミュニティWikiの質問には、この一般的な問題の原因が記載されています:http://stackoverflow.com/questions/5407250/causes-of-java-lang-nosuchmethoderror-main-exception-in-thread-main –

答えて

1

最も可能性の高い原因は、あなたのクラス名とファイル名が一致しdoesnotことをする必要があります。 Heapクラスを含む新しいファイルを作成し、ファイル名をHeap.javaとします。 BuildHeapクラスは、同じパッケージ内の別のファイルに保持します。ヒープを実行します。それは動作するはずです。 それ以外の場合は、BuildHeapクラスをpublicクラスから変更し、Heapクラスをpublicにします。

より良い方法は、異なるファイルのクラスを分離することです。

+0

@All Thanks for返信する! – Ava

+0

それは、それを持ってくれました:)ありがとう – Ava

+0

@vartika:あなたは大歓迎です! – aNish

3

パブリッククラスBuildHeap(パッケージプライベートクラスHeapではなく)にメインメソッドを配置する必要があります。あるいは、コマンドラインで間違ったクラス名を指定しただけかもしれません。繰り返しますが、メインはではなく、Heapです。

関連する問題