Exercice Java animaux de la ferme

Fermé
boulote - Modifié le 21 janv. 2020 à 14:56
 trifou - 21 janv. 2020 à 21:34
Bonjour, pour apprendre java, un petit exercice m'a été donné, dans lequelle je dois "gerer le stocke" d'animaux dans la ferme.
Je chercher à faire un menu, dans lequel l'utilisateur dit ce qu'il veut calculer (moyenne, plus gros poid, plus petits....)
J'ai une erreur avec la manipulation de mes tableaux, dans la derniere methode "grospoids" je n'arrive pas a faire en sorte que cette fonction me retourne un int du tableau.
En esperant que vous m'aidiez
Cordialement

import java.io.*; //on importe toute les classe de java
class Gestion2{
    public static void main(String []args)
    {
        int []tab =new int [2];
        String []tab1=new String [2];
        String []tabid=new String [2];
        for (int i=0;i<2;i++)
        {
     System.out.println("Veuillez entrer les donnees");
            System.out.println("Donnez le poids " +(i+1));
            int num=saisie_entier();
     System.out.println("Donnez le nom " +(i+1));
     String chaine=saisie_chaine();
     System.out.println("Donnez l'identifiant " +(i+1));
     String id=saisie_chaine();
     
     
     tab[i]=num;
     tab1[i]=chaine;
     tabid[i]=id;
        }
        System.out.println("fin de saisie");
        for (int i=0;i<tab.length;i++)
        {
            System.out.println("l'animal "+tabid[i]+" a le poids " +tab[i]);
        }
 while (true)
 {
     menu();
     int choix=saisie_entier();
     if (choix==1){
  int gros=grospoids(tab);
  System.out.println("le plus gros animal de la ferme pese : " + gros);
     }
 }
   
    }
    static int saisie_entier() //permet d'entrer donnee/lire un nombre
    {
 try{
     BufferedReader buff = new BufferedReader (new InputStreamReader(System.in));
     String chaine=buff.readLine();
     int num=Integer.parseInt(chaine);
     return num;
 }
 catch(IOException e){return 0;}
    }
    
    static String saisie_chaine()
    {
 try {
     BufferedReader buff=new BufferedReader (new InputStreamReader(System.in));
     String chaine=buff.readLine();
     return chaine;
 }
 catch(IOException e){
     System.out.println("Impossible de travailler" +e);
     return null;
 }

}
    static void  menu()  //affiche le menu pour l'utilisateur
    {
 System.out.println("Tapez 1 pour  voir qui a le plus gros poids");
 System.out.println("Tapez 2 pour  voir qui a le plus petit poids");
 System.out.println("Tapez 3 pour  voir quelle est la moyenne");
 System.out.println("Tapez 4 pour voir la liste des animaux");
 
    }

    static int grospoids(tab){
 int max=0;
 for (int i=0;i<tab.length;i++){
     if (tab[i]>max){
  max=tab[i];
     }
 }
 return max;
    }
}
A voir également:

1 réponse

Bonsoir,

Tu n'as pas d'erreur à la compilation ?
Moi si je compile ton programme, ça ne passe pas justement avec ta méthode grospoids et l'argument de cette méthode dont le type doit être déclaré.

static int grospoids(int [] tab) {
   // code
}


Pourtant cela aurait dû te sauter aux yeux en regardant ta méthode main et l'argument de celle-ci.
0
Ah oui en effet j'avais pas vu ça
Merci bien !
Si tu veux bien jai une autre question :
Par exemple jai deux tableaux de même taille, une avec des noms et une autre avec des poids. Est-ce que cest possible de passer ces deux tableaux en arg d'une méthode pour pourvoir retourner à la fin de la méthode une liste avec les éléments des 2 tableaux réunis ?
En te remerciant !
0
trifou > Boulote
21 janv. 2020 à 21:34
Pour être honnête, je n'ai jamais fait de java, mais une recherche rapide montre que cela se fait avec des types custom qui ne sont rien d'autres que de simples classes avec les propriétés comme cela se fait avec les struct en c.

Quelque chose comme (suppositions)

class MonType {
    int num;
    String str;
}


Et pour la déclaration, cela devrait se faire comme pour tous types.

MonType[] tabtype = new MonType[2];


J'ai vu aussi qu'il y avait les ArrayList pour faire ça, pas sûr, et si je dis des sottises, quelqu'un connaissant bien java corrigera ce que je dis :D
0