可能重复:
Exception in thread “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]+" ");
}
}
答案 0 :(得分:3)
您需要将main方法放在公共类BuildHeap
中(而不是包 - 私有类Heap
)。或者您可能只是在命令行中指定了错误的类名。同样,main位于Heap
,而不是BuildHeap
。
答案 1 :(得分:1)
最可能的原因应该是您的班级名称和文件名不匹配。 创建一个包含Heap类的新文件,文件名为Heap.java。 将BuildHeap类保存在同一包中的不同文件中。运行堆。它应该工作。 否则,从公共类更改BuildHeap类,并将Heap类设置为public。
更好的方法是将不同文件中的类分开。