Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1534 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  pb lors creation d'une classe generic en java pour type primitif

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb lors creation d'une classe generic en java pour type primitif

n°1863931
croco57
Posté le 20-03-2009 à 10:54:14  profilanswer
 

lorsque je complile le fichier suivant il me donne le erreur suivante
 
 
public class TrieurNb<number N>
{
   private boolean croissant;
 
   /**
      cNnstruit un trieur de nombres
    */
   public TrieurNb(boolean croissant)
   {
      this.croissant=croissant;
   }
   
   
    public void tri(N[] tab,int debut, int fin)
    {
        construireTas(tab,debut,fin);
        deconstruireTas(tab,debut,fin);
    }
   
    private void construireTas(N[] tab,int debut, int fin)
    {        
        int j;
         
        for(int i=debut+1;i<fin;i++)
        {
            j=i;
            if(croissant==true)
            {
                while(j>=0 && pere(j)>=0 && tab[pere(j)].compareTo(tab[j])<0)
                {
                    echange(tab,pere(j),j);
                    j=pere(j);
                }
            }
            else
            {
                while(j>=0 && pere(j)>=0 &&  tab[pere(j)].compareTo(tab[j])>0)
                {
                    echange(tab,pere(j),j);
                    j=pere(j);
                }
            }
        }
         
    }
 
    private void deconstruireTas(N[] tab,int debut, int fin)
    {
        int j;
        int fils;
         
        for(int i=fin-1;i>debut;i--)
        {  
            j=debut;
            echange(tab,debut,i);
            if(croissant==true)
            {    
                 
                while(filsg(j) < i && tab[filsg(j)]<tab[j] || (filsd(j) < i && tab[filsd(j)]<tab[j]))
                {
                    fils=filsg(j);
                     
                    if((filsd(j) < i && tab[filsd(j)]<tab[j]) && filsd(j) < i)
                    {
                        fils=filsd(j);
                    }                    
                    echange(tab,fils,j);
                     
                    j=fils;                    
                }
            }
            else
            {
                while(filsg(j) < i && tab[filsg(j)]<tab[j] || (filsd(j) < i && tab[filsd(j)]<tab[j]))
                {
                    fils=filsg(j);
                     
                    if((filsd(j) < i && tab[filsd(j)]<tab[j]) && filsd(j) < i)
                    {
                        fils=filsd(j);
                    }                    
                    echange(tab,fils,j);
                     
                    j=fils;                    
                }
            }
        }    
    }
 
    private void echange(N[] tab,int indice1, int indice2)
    {
        if(indice1 != indice2)
        {
            N tmp;
            tmp = tab[indice1];
            tab[indice1] = tab[indice2];
            tab[indice2] = tmp;
        }
    }
 
   
   /**
        calcul l'indice Nu se trNuve le pere du fils passe en parametre
          @param i indice du fils
     */
    private int pere(int i)
    {
        return (i+1)/2 - 1;
    }
 
    /**
        calcul l'indice Nu se trNuve le fils gauche du pere passe en parametre
          @param i indice du pere
     */
    private int filsg(int i)
    {
        return (2*i)+1;
    }
 
    /**
        calcul l'indice Nu se trNuve le fils drNit du pere passe en parametre
          @param i indice du pere
          @return  
     */
    private int filsd(int i)
    {
        return 2*(i+1);
    }
     
     
    public static void main(String[] a)
    {
       TrieurNb<int> t =new TrieurNb<int> (true);
       int [] tab = {1, 23, 3 ,12, 12};
       t.tri(tab,0,tab.length);
       for(int i = 0 ; i<tab.length;i++)
       {
         System.out.print(tab[i]+"\t" );
       }
       System.out.println();
    }
     
}

 
 
javac  TrieurNb.javaTrieurNb.java:5: > expected
public class TrieurNb<number N>
                            ^
TrieurNb.java:5: illegal start of type
public class TrieurNb<number N>
                              ^
TrieurNb.java:5: <identifier> expected
public class TrieurNb<number N>
                               ^
TrieurNb.java:6: ';' expected
{
 ^
4 errors
 
 

mood
Publicité
Posté le 20-03-2009 à 10:54:14  profilanswer
 

n°1863932
croco57
Posté le 20-03-2009 à 10:55:30  profilanswer
 

c'est assez urgent c'est pour un projet

n°1863937
croco57
Posté le 20-03-2009 à 11:01:47  profilanswer
 

excuse moi j'ai fait une erreur dans le code passer
voici le bon mais j'ai les même erreur
 
public class TrieurNb<N number>
{
   private boolean croissant;
 
   /**
      cNnstruit un trieur de nombres
    */
   public TrieurNb(boolean croissant)
   {
      this.croissant=croissant;
   }
   
   
    public void tri(N[] tab,int debut, int fin)
    {
        construireTas(tab,debut,fin);
        deconstruireTas(tab,debut,fin);
    }
   
    private void construireTas(N[] tab,int debut, int fin)
    {        
        int j;
         
        for(int i=debut+1;i<fin;i++)
        {
            j=i;
            if(croissant==true)
            {
                while(j>=0 && pere(j)>=0 && tab[pere(j)]<tab[j])
                {
                    echange(tab,pere(j),j);
                    j=pere(j);
                }
            }
            else
            {
                while(j>=0 && pere(j)>=0 && tab[pere(j)]<tab[j])
                {
                    echange(tab,pere(j),j);
                    j=pere(j);
                }
            }
        }
         
    }
 
    private void deconstruireTas(N[] tab,int debut, int fin)
    {
        int j;
        int fils;
         
        for(int i=fin-1;i>debut;i--)
        {  
            j=debut;
            echange(tab,debut,i);
            if(croissant==true)
            {    
                 
                while(filsg(j) < i && tab[filsg(j)]<tab[j] || (filsd(j) < i && tab[filsd(j)]<tab[j]))
                {
                    fils=filsg(j);
                     
                    if((filsd(j) < i && tab[filsd(j)]<tab[j]) && filsd(j) < i)
                    {
                        fils=filsd(j);
                    }                    
                    echange(tab,fils,j);
                     
                    j=fils;                    
                }
            }
            else
            {
                while(filsg(j) < i && tab[filsg(j)]<tab[j] || (filsd(j) < i && tab[filsd(j)]<tab[j]))
                {
                    fils=filsg(j);
                     
                    if((filsd(j) < i && tab[filsd(j)]<tab[j]) && filsd(j) < i)
                    {
                        fils=filsd(j);
                    }                    
                    echange(tab,fils,j);
                     
                    j=fils;                    
                }
            }
        }    
    }
 
    private void echange(N[] tab,int indice1, int indice2)
    {
        if(indice1 != indice2)
        {
            N tmp;
            tmp = tab[indice1];
            tab[indice1] = tab[indice2];
            tab[indice2] = tmp;
        }
    }
 
   
   /**
        calcul l'indice Nu se trNuve le pere du fils passe en parametre
          @param i indice du fils
     */
    private int pere(int i)
    {
        return (i+1)/2 - 1;
    }
 
    /**
        calcul l'indice Nu se trNuve le fils gauche du pere passe en parametre
          @param i indice du pere
     */
    private int filsg(int i)
    {
        return (2*i)+1;
    }
 
    /**
        calcul l'indice Nu se trNuve le fils drNit du pere passe en parametre
          @param i indice du pere
          @return  
     */
    private int filsd(int i)
    {
        return 2*(i+1);
    }
     
     
    public static void main(String[] a)
    {
       TrieurNb<int> t =new TrieurNb<int> (true);
       int [] tab = {1, 23, 3 ,12, 12};
       t.tri(tab,0,tab.length);
       for(int i = 0 ; i<tab.length;i++)
       {
         System.out.print(tab[i]+"\t" );
       }
       System.out.println();
    }
     
}

n°1864116
nerisson
Pic-pic
Posté le 20-03-2009 à 16:09:46  profilanswer
 

C'est peut être plutôt quelque chose comme ça que tu veux faire:
  public class TrieurNb<N extends Number> {


---------------
Light is right
n°1864131
masklinn
í dag viðrar vel til loftárása
Posté le 20-03-2009 à 16:42:12  profilanswer
 

Je valide la réponse de nerisson, apprendre la syntaxe de java, ça aide pour coder en java :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1864146
croco57
Posté le 20-03-2009 à 16:55:27  profilanswer
 

ce que je cherche à faire c'est un trieur numérique génerique pour ne pas avoir un trieur par type primitif aider moi SVP


Message édité par croco57 le 20-03-2009 à 16:58:36
n°1864149
croco57
Posté le 20-03-2009 à 16:59:17  profilanswer
 

nerisson a écrit :

C'est peut être plutôt quelque chose comme ça que tu veux faire:
  public class TrieurNb<N extends Number> {


ce que je cherche à faire c'est un trieur numérique génerique pour ne pas avoir un trieur par type primitif aider moi SVP

n°1864647
nerisson
Pic-pic
Posté le 23-03-2009 à 09:58:32  profilanswer
 

Et quel est ton problème ?


---------------
Light is right
n°1864664
Bidem
Posté le 23-03-2009 à 10:26:22  profilanswer
 

croco57 a écrit :


ce que je cherche à faire c'est un trieur numérique génerique pour ne pas avoir un trieur par type primitif aider moi SVP

 

Les types génériques de java ne sont pas utilisables avec les types primitifs.

 

De plus ce que tu veux faire existe déja en fait :
Arrays.sort(int[])


Message édité par Bidem le 23-03-2009 à 10:29:40

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  pb lors creation d'une classe generic en java pour type primitif

 

Sujets relatifs
Erreur de type Warning: mysql_fetch_array()[résolu] Création de dossier
[Java/Android] Concours SFR, qui participe ?creation menu en VBA ??
Aide pour la création d'un site.Creation d'un requete Register vers un serveur sip avec jain-sip
creation interface requete pour utilisateurQuestion sur niveau necessaire en JAVA
Appllet Java problème lors de connexion ftpProgress Bar sous Java visual web
Plus de sujets relatifs à : pb lors creation d'une classe generic en java pour type primitif


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR