-1

重複の可能性:
スレッド「メイン」での例外 java.lang.NoSuchMethodError: main

私の主な構文は正しいです。他に何が問題になる可能性がありますか?

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]+" ");
    }
}
4

2 に答える 2

3

BuildHeapmainメソッドを(package-privateクラスではなく) publicクラスに配置する必要がありますHeap。または、コマンドラインで間違ったクラス名を指定しただけかもしれません。繰り返しますが、mainはにありHeap、ではありませんBuildHeap

于 2011-02-07T02:18:29.787 に答える
1

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

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

于 2011-02-07T02:18:05.860 に答える