Petit exercice java

nds -  
arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   -
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. Arya Dröttningu Messages postés 650 Statut Membre 157
     
    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. nds
       
      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. Arya Dröttningu Messages postés 650 Statut Membre 157
     
    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. nds
       
      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. Arya Dröttningu Messages postés 650 Statut Membre 157
       
      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. Arya Dröttningu Messages postés 650 Statut Membre 157
       
      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. nds
       
      sa elle me donne un seule personne mais je veus qu'il me retourne 2 personnes moin agé
      0
    5. nds
       
      autrement si je veux mettre le résulta dans autre tableau
      0
  3. Arya Dröttningu Messages postés 650 Statut Membre 157
     
    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. nds
       
      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. Arya Dröttningu Messages postés 650 Statut Membre 157
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Leviathan49 Messages postés 267 Statut Membre 70
     
    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. Arya Dröttningu Messages postés 650 Statut Membre 157
       
      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. arth Messages postés 84 Date d'inscription   Statut Contributeur Dernière intervention   1 296
       
      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