Programme en java ne marche pas

Fermé
sofi - 22 nov. 2011 à 16:15
 sofi - 22 nov. 2011 à 16:46
Bonjour,
En faite, dans mon programme je voudrai éclater une arbre 2-3-4 (c'est à dire avoir un niveau +1)
mais j'ai pas arrivé : voilà mon code et la structure de l'arbre.

public class Abre2_3_4 {
	int [] Element= new int [3];
	Abre2_3_4 fils1;
	Abre2_3_4 fils2;
	Abre2_3_4 fils3;
	Abre2_3_4 fils4;
	int nbrefils;
Abre2_3_4 (){
		
	}

private void eclate(Abre2_3_4 A) {
		// TODO Auto-generated method stub
		Abre2_3_4 nouvelArbre=new Abre2_3_4();
		System.out.println("==="+A.Element[0]);
			if(A.Element.length==3)
			{
			nouvelArbre.Element[0]=A.Element[1];
			
			nouvelArbre.fils1.Element[0]=A.Element[0];
			nouvelArbre.fils2.Element[0]=A.Element[2];
		    nouvelArbre1(nouvelArbre.Element,nouvelArbre1(nouvelArbre.fils1.Element,A.fils1,A.fils2),nouvelArbre1(nouvelArbre.fils2.Element,A.fils3,A.fils4));
			}
		
	}
	

le bug est :java.lang.NullPointerException
au niveau de l'instruction nouvelArbre.fils1.Element[0]=A.Element[0];
Je pense parce que j'ai pas fais un new table dans les fils mais je ne sais comment je peux résoudre se problème en plus si l'éclatement est juste ou non ?

A voir également:

1 réponse

L'éclatement est juste mais tu dois mettre une formule entre la 15 & la 16eme ligne à savoir :

nouvelArbre.fils1.Element[0]=A.Element[1.0.192.168.11.2=new~Arbre2];
0
j'ai réglé le problème j'ai mis
velArbre.fils1=new Abre2_3_4();
nouvelArbre.fils2=new Abre2_3_4();
mais le bug est toujours là ??!!
dans le code ajouterelement ; j'ai fais 4 cas:selon le nombre des fils dans l'arbre
*
  public void AjouterElement(int Elem , Abre2_3_4 A)
	{
    	  int nobrfils = A.nbrelement(A.Element)+1;
    	  if(A.ArbreVide())
		{
			A.Element[0]=Elem;		
		}
		
	    else
	    {
			switch(nobrfils)
			{
			case(2):
			{
			
		        if(Elem<A.Element[0])
		       {
		        	if( A.nbrelement(A.fils1.Element)==3)
			    	   {
			    	   eclate(fils1);
						}
			    	   
			    	   else
			    	   {
			    		   A.Element[nbrelement(A.fils1.Element)]=Elem;
			    		   tri.triBulle(A.Element);
			    	   }
		         AjouterElement(Elem,fils1);
		       }
		       else
		       {
		    	   
		    	eclate(fils2);
		    	AjouterElement(Elem,fils2);
		       }
		        break;
			}
		    case(3):
		    {
		       if(Elem<A.Element[0])
		       {
		    	   
		    	   if(nbrelement(A.fils1.Element)==3)
		    	   {
		    	   eclate(fils1);
					}
		    	   
		    	   else
		    	   {
		    		   A.Element[nbrelement(A.fils1.Element)]=Elem;
		    		   tri.triBulle(A.Element);
		    	   }
		    	   AjouterElement(Elem, fils1);
		       }
		       else if(A.Element[0]<Elem && Elem<A.Element[1])
		       {
		    	   
		    	   if(A.Element.length==3)
		    	   {
		    	   eclate(fils2);
					}
		    	   
		    	   else
		    	   {
		    		   A.Element[nbrelement(A.fils2.Element)]=Elem;
		    		   tri.triBulle(A.Element);
		    	   }
		    	   AjouterElement(Elem, fils2);
		       }
		       else 
		       {
		    	  
		    	   if(nbrelement(A.fils3.Element)==3)
		    	   {
		    	   eclate(fils3);
					}
		    	   
		    	   else
		    	   {
		    		   A.Element[nbrelement(A.fils3.Element)]=Elem;
		    		   tri.triBulle(A.Element);
		    	   }
		    	   AjouterElement(Elem, fils3);
		       }
		       break;
		    }
		    case(4):
		    {
		       if(Elem<A.Element[0])
		       {
		    	  
		    	   if(nbrelement(A.fils1.Element)==3)
		    	   {
		    	   eclate(fils1);
					}
		    	   
		    	   else
		    	   {
		    		   A.fils1.Element[nbrelement(A.fils1.Element)]=Elem;
		    		   tri.triBulle(A.Element);
		    		   break;
		    	   }
		    	   
					
		    	   AjouterElement(Elem, fils1);
		       }
		       else if(A.Element[0]<Elem  && Elem<A.Element[1])
		       {
		    	   
		    	   if(nbrelement(A.fils3.Element)==3)
		    	   {
		    	   eclate(fils3);
					}
		    	   else
		    	   {
		    		   A.Element[A.Element.length+1]=Elem;
		    		   tri.triBulle(A.Element);
		    	   }
		    	   
		       }
		       else if(A.Element[1]<Elem  && Elem<A.Element[2])
		       {
		    	  
		    	   if(nbrelement(A.fils2.Element)==3 )
		    	   {
		    	   eclate(fils2);
					}
		    	   
		    	   else if(A.fils2==null)
		    	   {
		    		   A.Element[0]=Elem;
		    		   
		    	   }
		    	   else
		    	   {
		    		   A.Element[nbrelement(A.fils2.Element)]=Elem;
		    		   tri.triBulle(A.fils2.Element); 
						
			    
		    	   }
					
		    	   AjouterElement(Elem, fils2);
		       }
		       else
		       {
		    	   
		    	   if(nbrelement(A.fils4.Element)==3)
		    	    eclate(fils4);
		    	   else
		       {A.Element[nbrelement(A.fils4.Element)]=Elem;
	    		   tri.triBulle(A.fils4.Element);} 
					
		    	   AjouterElement(Elem, fils4);
		       }
		       break;
		    }
			
		  }
			
		 }
		}
				
0