Programme en java ne marche pas

sofi -  
 sofi -
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 ?

1 réponse

  1. Kayser
     
    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
    1. sofi
       
      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