Petit exercice java

Bonjour,

je un petit exercice java et il m'a demandé d'afficher le personne le moin agé .voici ma réponce mais il marche plus et merci de votre aide si c'est possible :

public class conte {
private String nom;
private String prenom;
private int eta;

public conte(String n,String p,int e)
{
this.nom=n;
this.prenom=p;
this.eta=e;

}

public static void println(conte[] b)
{

for(int i=0;i<b.length;i++)
{

System.out.println("le tableau est "+b[i]);}}
public static int f(conte[]a)
{
int min=a[0].eta;
for(int i=1;i<a.length;i++)
{
if(a[i].eta<min)
{min=a[0].eta;
}

}
return min;

}

public static void main(String[]args)
{
conte []n=new conte[4];
n[0]=new conte("jj","hhh",4);
n[1]=new conte("jj","hhh",7) ;
n[2]=new conte("jj","hhh",3);
n[3]=new conte("jj","hhh",8) ;

conte []b=new conte[2];

System.out.println(conte.f(b));
}

}

5 réponses

  1. Hello,

    Il me semble qu'il y a une erreur dans ta fonction public static void println(conte[] b)

    A la fin,

    if(a[i].eta<min)
    {min=a[0].eta;
    }

    c'est plutôt min = a[i].eta
    0
    1. non plus tt jours il m'iffiche cette erreur :
      Exception in thread "main" java.lang.NullPointerException
      at conte.f(conte.java:25)
      at conte.main(conte.java:52)
      0
  2. ah je crois que ça y est, à la fin tu as fait :
    conte []n=new conte[4];
    n[0]=new conte("jj","hhh",4);
    n[1]=new conte("jj","hhh",7) ;
    n[2]=new conte("jj","hhh",3);
    n[3]=new conte("jj","hhh",8) ;

    conte []b=new conte[2];

    System.out.println(conte.f(b));

    mais le b n'est pas rempli !

    Essaye plutôt System.out.println(conte.f(n));
    0
    1. Merci bien elle marche et ji je veux afficher le nom de deux personnes le moin agé qu'est ce que je doit ajouter .Merci d'avance
      0
    2. Tu veux qu'elle affiche le nom et plus le min c'est ça ? Si oui il faut réécrire la fonction println en mettant sauvegardant le i pour lequel l'âge est le plus petit, et mettre un return a[i].nom
      0
    3. sinon tu peux faire :

      public class conte {
      private String nom;
      private String prenom;
      private int eta;
      
      public conte(String n,String p,int e)
      {
      this.nom=n;
      this.prenom=p;
      this.eta=e;
      
      }
      
      
      public static int minAge(conte[]a){
          int min=a[0].eta;
          int j = 0 ;
      for(int i=1;i<a.length;i++)
      {
      if(a[i].eta<min)
      {min=a[i].eta;
       j=i ;
      }
      
      }
      return j;
      
      }
      
      
      
      
      
      public static void main(String[]args)
      {
      conte []n=new conte[4];
      n[0]=new conte("jj","hhh",4);
      n[1]=new conte("jj","hhh",7) ;
      n[2]=new conte("jj","hhh",3);
      n[3]=new conte("jj","hhh",8) ;
      
      conte []b=new conte[2];
      
      int indice = conte.minAge(n);
      System.out.println(n[indice].eta);
      
      System.out.println(n[indice].nom);
      
      }
      
      
      
      
      }
      
      0
    4. sa elle me donne un seule personne mais je veus qu'il me retourne 2 personnes moin agé
      0
    5. autrement si je veux mettre le résulta dans autre tableau
      0
  3. public class conte {
    private String nom;
    private String prenom;
    private int eta;
    
    public conte(String n,String p,int e)
    {
    this.nom=n;
    this.prenom=p;
    this.eta=e;
    
    }
    
    
    public static int minAge(conte[]a){
        int min=a[0].eta;
        int j = 0 ;
    for(int i=1;i<a.length;i++)
    {
    if(a[i].eta<min)
    {min=a[i].eta;
     j=i ;
    }
    
    }
    return j;
    
    }
    
    
    
    
    
    public static void main(String[]args)
    {
    conte []n=new conte[4];
    n[0]=new conte("jj1","hhh",4);
    n[1]=new conte("jj2","hhh",7) ;
    n[2]=new conte("jj3","hhh",3);
    n[3]=new conte("jj4","hhh",8) ;
    
    conte []b=new conte[2];
    
    int indice = conte.minAge(n);
    System.out.println(n[indice].eta);
    
    int min=n[0].eta;
    int min1=n[0].eta;
    int j = 0, l= 0 ;
    for(int i=1;i<n.length;i++)
    {
    if(n[i].eta<min)
    {min=n[i].eta;
     j=i ;
    }
        }
    for (int k= 1 ; k<n.length;k++){
        if (k!=j && n[k].eta<min1){
            min1 = n[k].eta;
            l=k;
    
        }
        }
    
    
    System.out.println(n[j].nom);
    System.out.println(n[l].nom);
    
    
        }
    }
    
    0
    1. trés bien merci mais si le méthose et Agemin est déclarer comme sa ;

      "public static conte[] minAge(conte[]a)"

      au lieu de :

      public static int minAge(contee[]a){
      int min=a[0].eta;
      int j = 0 ;
      for(int i=1;i<a.length;i++)
      {
      if(a[i].eta<min)
      {min=a[i].eta;
      j=i ;
      }

      }
      return j;

      }
      0
  4. Comme ça :

    public class conte {
    private String nom;
    private String prenom;
    private int eta;
    
    public conte(String n,String p,int e)
    {
    this.nom=n;
    this.prenom=p;
    this.eta=e;
    
    }
    
    
    public static String[] minAge(conte[]n){
     String tab[] ;
     tab = new String [2];
    int min=n[0].eta;
    int min1=n[0].eta;
    int j = 0, l= 0 ;
    for(int i=1;i<n.length;i++)
    {
    if(n[i].eta<min)
    {min=n[i].eta;
     j=i ;
    }
        }
    for (int k= 1 ; k<n.length;k++){
        if (k!=j && n[k].eta<min1){
            min1 = n[k].eta;
            l=k;
    
        }
        }
    
    tab[0] = n[j].nom ;
    tab[1] = n[l].nom ;
    
    
    return tab ;
    
    
    }
    
    
    
    
    
    public static void main(String[]args)
    {
    conte []n=new conte[4];
    n[0]=new conte("jj1","hhh",4);
    n[1]=new conte("jj2","hhh",7) ;
    n[2]=new conte("jj3","hhh",3);
    n[3]=new conte("jj4","hhh",8) ;
    
    String []b=new String[2];
    
    b = minAge(n);
    
    System.out.println(b[0]);
    System.out.println(b[1]);
    
    }
    }
    0
    1. Mon java est peut-être en peu rouillé mais :
      On n'écris pas plutôt
      Objet[] tableau 

      au lieu de
      Objet []tableau 
      pour un tableau d'objets ?
      0
      1. tu veux dire l'espace après les crochets au lieu de avant ? Je pense que les 2 doivent fonctionner mais à vérifier
        0
      2. Contributeur
        Non il est très très tolérant :-)

        Tu peux mettre 100 espace avant les [], c'est pas ça qui le dérange.
        0