2011-02-07 4 views
-1

Possible Duplicate:
Exception in thread “main” java.lang.NoSuchMethodError: mainjava.lang.NoSuchMethodError: principale Exception dans le thread "principal"

Ma syntaxe principale est correcte. Quoi d'autre pourrait être le problème?

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

Essayez-vous d'exécuter 'Heap' ou' BuildHeap' comme classe principale? 'BuildHeap' n'a pas de' main', ce qui peut causer ce problème. En outre, 'Heap' n'est pas marqué' public', ce qui peut avoir quelque chose à voir avec ça. – templatetypedef

+0

Cette question Wiki de la communauté répertorie les causes possibles de ce problème commun: http://stackoverflow.com/questions/5407250/causes-of-java-lang-nosuchmethoderror-main-exception-in-thread-main –

Répondre

1

La cause la plus probable devrait être que votre nom de classe et le nom du fichier doesnot correspondance. Créez un nouveau fichier contenant la classe Heap et le nom de fichier Heap.java. Conserver la classe BuildHeap dans un fichier différent dans le même package. Exécutez Heap. Ça devrait marcher. Sinon, remplacez la classe BuildHeap par la classe publique et rendez la classe Heap publique.

Le meilleur moyen serait de séparer les classes dans différents fichiers.

+0

@All Merci pour répondre! – Ava

+0

L'a fait, je l'ai eu :) Merci – Ava

+0

@vartika: de rien! – aNish

3

Vous devez placer la méthode principale dans la classe publique BuildHeap (pas la classe privée-package Heap). Ou peut-être que vous venez de spécifier le mauvais nom de classe sur la ligne de commande. Encore une fois, la principale est dans Heap, pas BuildHeap.

Questions connexes