Programme Java : Bloqué dans mon excercice
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

Programme Java : Bloqué dans mon excercice



  1. #1
    michele759

    Programme Java : Bloqué dans mon excercice


    ------

    Salut à tous,

    Je suis bloqué dans un exercice que j'ai essayé de le retourner dans tous les sens...

    Voici les questions de l'exercice :

    Nom : 1467007691-nlshck.png
Affichages : 91
Taille : 118,8 Ko

    Je suis bloqué au dernier point de l'exercice 4. Je n'arrive pas à le construire, soit ça fait une erreur à la compilation, soit ça fait un overflow. Après j'admets qu'il est possible que je me soit trompé sur les points d'avant mais je ne pense pas.

    Le problème, c'est que this.t n'accepte que les Fruits, p étant un "Panier", f est un fruit.


    Code:
    class Fruit{
    public String nom; // le nom du fruit public double poids; 
    public double poids; // le poids du fruit en grammes
    public Fruit(String nom, double poids){
    this.nom = nom;
    this.poids = poids;
    }
    }
    
    public class Test{ 
    static void afficher (Fruit f){
    System.out.println("Ce fruit est un(e) "+ f.nom + " et pèse " + f.poids + " gramme(s).");
    }
    
    public static void main(String[] args){
    Fruit f = new Fruit("pamplemousse", 330); 
    Fruit g = new Fruit("pamplemousse", 330); 
    Fruit h = f;
    afficher (f);
    }
    
    static Fruit ajout (Fruit f1, Fruit f2) {
    Fruit d = new Fruit ((f1.nom + "+" + f2.nom),(f1.poids+f2.poids));
    return (d);
    }
    }
    
    class Panier{
    
    public Fruit t[];
    public Panier (){}
    
    public Panier (Fruit [] f){
    this.t = f;
    }
    
    public Panier (Fruit f, Panier p){
    this.t = new Fruit []{f};
    }
    
    }
    Comment faire pour faire une construction qui ajoute p dans un nouveau panier, et qui ajoute f ?
    Si certains peuvent me guider ou me donner 2-3 tuyaux

    -----

  2. #2
    Lavigne958

    Re : Programme Java : Bloqué dans mon excercice

    Salut,

    Ton panier contient un Tableau de fruits.
    Il faut donc que tu ajoute ce qu'on appelle un "getter" ou "assesseur" du style :

    Public Fruit[] getfruits(){
    Return this.t;
    }

    Et dans le coin constructeur de panier tu récupère le table et tu l'affecte.

  3. #3
    pm42

    Re : Programme Java : Bloqué dans mon excercice

    Pourquoi rajouter un getter sur une variable qui est déjà publique ?
    En quoi est ce que cela va l'aider ?

    Sinon pour michele759, le plus simple serait que tu nous montres ce que tu as essayé d'écrire comme code.
    Sachant qu'ajouter un élément à un tableau n'est pas immédiat, le plus souvent, il faut créer un tableau d'une taille plus grande de 1 élement, copier le tableau original et mettre le nouvel élément à la fin.

  4. #4
    shakone

    Re : Programme Java : Bloqué dans mon excercice

    Code:
    public Panier (Fruit f, Panier p){
        this.t = new Fruit []{f};
    }
    Tu mets juste le fruit dans le panier, tu ne l'ajoutes pas aux fruits du panier p
    Sinon, il ne faudrait pas initialiser la taille du tableau?
    pingouin dans les champs, hiver méchant.

  5. A voir en vidéo sur Futura
  6. #5
    Lavigne958

    Re : Programme Java : Bloqué dans mon excercice

    Je n'avais pas vu la visibilité du tableau.

    Pour ton constructeur ça va ce décomposer comme suit :
    - Tu copie ton tableau venant du panier en arguments dans le tableau du nouveau panier
    - Tu ajoute le fruit
    - Le tour est joué

    Pour la copie du tableau tu n'a qu'à utiliser le signe "="
    Comme ça :

    Code:
    This.t = p.t;
    Attention avant d'ajouter le fruit tu doit t'assurer que ton tableau n'est pas plein.

  7. #6
    pm42

    Re : Programme Java : Bloqué dans mon excercice

    Citation Envoyé par Lavigne958 Voir le message
    Pour la copie du tableau tu n'a qu'à utiliser le signe "="
    As tu vérifié que ça copie bien ? En Java = ne fait jamais de copie sauf pour les types élémentaires (int, float, ...). Pour le reste, cela fait une simple affectation de variable.

  8. #7
    Lavigne958

    Re : Programme Java : Bloqué dans mon excercice

    Oui je sais très bien que ça ne fait que copier la référence du tableau, comme un pointeur un peut.

    J'essaye de faire simple pour expliquer et je ne voulais pas l'occuper avec la gestion de la mémoire en Java.

  9. #8
    pm42

    Re : Programme Java : Bloqué dans mon excercice

    Citation Envoyé par Lavigne958 Voir le message
    Oui je sais très bien que ça ne fait que copier la référence du tableau, comme un pointeur un peut.
    J'essaye de faire simple pour expliquer et je ne voulais pas l'occuper avec la gestion de la mémoire en Java.
    Tu as dit "copier" ce qui n'est pas le cas. Et comment va t-il ajouter un élément à un tableau sans s'occuper de la gestion de la mémoire en Java ?

  10. #9
    Bluedeep

    Re : Programme Java : Bloqué dans mon excercice

    Citation Envoyé par Lavigne958 Voir le message
    Je n'avais pas vu la visibilité du tableau.

    Pour ton constructeur ça va ce décomposer comme suit :
    - Tu copie ton tableau venant du panier en arguments dans le tableau du nouveau panier
    - Tu ajoute le fruit
    - Le tour est joué
    Conseil vraiment peu judicieux car tu fais une hypothèse forte sur le cycle de vie de l'instance appelante. (et je ne connais pas java).

  11. #10
    shakone

    Re : Programme Java : Bloqué dans mon excercice

    Il me semble également que pour copier un tableau déclaré "Fruits[]" comme dans l'énoncé, pour le donner à un autre objet il faut faire "=".
    Sinon on utiliserais une collection.
    pingouin dans les champs, hiver méchant.

  12. #11
    pm42

    Re : Programme Java : Bloqué dans mon excercice

    Citation Envoyé par shakone Voir le message
    Il me semble également que pour copier un tableau déclaré "Fruits[]" comme dans l'énoncé, pour le donner à un autre objet il faut faire "=".
    Non. "=" ne va pas copier un tableau, il va garder un pointeur sur celui qui est passé en argument.

    Citation Envoyé par shakone Voir le message
    Sinon on utiliserais une collection.
    Cela n'a rien à voir. On utiliser les tableaux ou les collections en fonction de l'usage qu'on va en faire. Les tableaux ont notamment l'avantage d'être rapides et peu consommateurs en mémoire. Si on ne fait pas beaucoup d'ajouts/suppressions par rapport à la lecture, c'est intéressant.
    La librairie Java les utilise notamment pour les Listeners dans awt/swing.

  13. #12
    Lavigne958

    Re : Programme Java : Bloqué dans mon excercice

    Je dit toujours, il y a 300 manières différentes de faire la même chose en Java....

    Un jour peut-être l'auteur du sujet reviendra lire nos messages vous pensez ??

  14. #13
    Bluedeep

    Re : Programme Java : Bloqué dans mon excercice

    Citation Envoyé par Lavigne958 Voir le message
    Je dit toujours, il y a 300 manières différentes de faire la même chose en Java....
    C'est ce qui s'appelle botter en touche.
    Et accessoirement, il n'y a jamais 300 manières de faire les choses correctement.

Discussions similaires

  1. Programme Java
    Par jsgane dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 14/05/2014, 16h42
  2. besoin d'aide SVP (programme java)
    Par faton_05 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 26/04/2014, 22h58
  3. Exécution d'une programme Java sur Mac
    Par kilwa dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 13/02/2014, 11h09
  4. installation du programme java sur windows 7!!!
    Par invite0da6e6b6 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 09/01/2011, 20h11
  5. Importer des sources DLL dans un programme java sous netbeans
    Par invitebac23ddd dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 03/06/2009, 11h24