-1

可能重复:
线程“main”中的异常 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

您需要将 main 方法放在公共类BuildHeap(而不是包私有类Heap)中。或者,也许您只是在命令行上指定了错误的类名。同样, main 是 in Heap,而不是BuildHeap

于 2011-02-07T02:18:29.787 回答
1

最可能的原因应该是你的类名和文件名不匹配。创建一个包含类 Heap 的新文件,文件名为 Heap.java。将 BuildHeap 类保存在同一包中的不同文件中。运行堆。它应该工作。否则将 BuildHeap 类从 public 类更改并将 Heap 类设为 public。

更好的方法是将类分开在不同的文件中。

于 2011-02-07T02:18:05.860 回答