Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problèmes avec FileWriter / Générez une facture

Apprenez l’objet avec Java

    7 novembre 2019 à 12:14:23

    j'ai suivi le tuto du cours  Apprenez l’objet avec Java

    leçon : Générez une facture

    j'ai pas réussi à Générez  la facture dans un fichier text comme l'exemple dans le tuto 

    FileWriter.java

    package com.cursan.homeshop;

    import java.io.IOException;

    import java.nio.file.Files;

    import java.nio.file.Path;

    import java.nio.file.Paths;

    public class FileWriter implements Writer {

        private String filename;

        private Path path;

        private String content;

        public FileWriter(String filename) {

            this.filename = filename;

        }

        @Override

        public void start() {

            path = Paths.get(filename);

            content = "";

        }

        @Override

        public void writeLine(String line) {

            content += line + "%n";

        }

        @Override

        public void stop() {

            try {

                Files.write(path, String.format(content).getBytes());

            } catch (IOException e) {

                System.err.println("Impossible de rédiger la facture");

            }

        }

    Main.java

    package com.cursan.homeshop;

    public class Main {

        public static void main(String[] args) {

            Product cafe = new Product("Philips HD7866/61", "Philips SENSEO Quadrante, Noir - 1 ou 2 tasses", 79.99);

            Product tv = new Television("TV Samsung UE49MU6292", "Smart TV LED incurvée 49\"", 599, 49, "LED");

            Fridge fridge = new Fridge("BEKO TSE 1042 F", "Réfrigérateur BEKO 130L - Classe A+ - blanc", 189, 130, false);

            Customer customer = new Customer("Juste Leblanc", "19 rue Germain Pilon, Paris");

            Bill bill = new Bill(customer, new RelayDelivery(27));

            bill.addProduct(cafe, 1);

            bill.addProduct(tv, 1);

            bill.addProduct(fridge, 1);

            bill.generate(new FileWriter("facture_leblanc"));

        }

    }

    Bill.java

    package com.cursan.homeshop;

    import java.util.HashMap;

    import java.util.Map;

    public class Bill {

    private Customer customer;

    private Map<Product, Integer> products= new HashMap<Product, Integer>();

    private Delivery delivery;

    public Bill(Customer customer, Delivery delivery ) {

    this.customer = customer;

    this.delivery = delivery;

    }

    /**

    * Add a product with a quantity in the bill

    * @param product product to add

    * @param quantity quantity of the product 

    */

    public void addProduct(Product product, Integer quantity ) {

    this.products.put(product, quantity);

    }

    public Customer getCustomer() {

    return customer;

    }

    public Map<Product, Integer> getProducts() {

    return products;

    }

    /**

    * Generate an output for the current Bill

    * @param writer object in charge of writing

    */

    public void generate(Writer writer) {

    writer.start();

    writer.writeLine("HomeShop compagnie");

    writer.writeLine("1 Place Charles de Gaulle, 75008 Paris");

    writer.writeLine("");

    writer.writeLine("Facture à l'attention de : ");

    writer.writeLine(customer.getFullname());

    writer.writeLine(customer.getAddress());

    writer.writeLine("");

    writer.writeLine("Mode de livraison : " + delivery.getInfo());

        writer.writeLine("");

        writer.writeLine("Produits : ");

        writer.writeLine("-----------------------------------------------------");

        for (Map.Entry<Product, Integer> entry : products.entrySet()) {

            Product product = entry.getKey();

            Integer quantity = entry.getValue();

            writer.writeLine(product.getName() + " - " + product.getPrice() + " - " + quantity + " unité(s)");

            writer.writeLine(product.getDescription());

            writer.writeLine("");

        }

        writer.writeLine("Livraison : " + delivery.getPrice());

        writer.writeLine("-----------------------------------------------------");

        writer.writeLine("Total : " + this.getTotal());

        writer.stop();

    }

    /**

    * get the total price for the current bill, including products and delivery cost

    * @return total price

    */

    public double getTotal() {

    double total = delivery.getPrice();

    for (Map.Entry<Product, Integer> entry : products.entrySet()) {

      Product product = entry.getKey();

          Integer quantity = entry.getValue();

          total += product.getPrice() * quantity;

    }

    //total += delivery.getPrice();

    return total;

    }

    }

    -
    Edité par TayebChakroun 11 novembre 2019 à 22:42:53

    • Partager sur Facebook
    • Partager sur Twitter
      7 novembre 2019 à 12:50:27

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci de colorer votre code à l'aide du bouton Code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: java;">Votre code ici</pre>.

      Manque de Politesse

      Votre message ne comporte pas ou peu de formules de politesse (« Bonjour », « Merci », « Au revoir », etc.). Les règles du site exigent que chaque nouveau message comporte un minimum de politesse. Après tout, les gens qui répondent le font gratuitement, sur leur temps libre. Ils méritent bien un minimum de considération, n'est-ce pas ?

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        17 novembre 2019 à 1:29:42

        Arrange ton code stp, la lecture est difficile
        • Partager sur Facebook
        • Partager sur Twitter

        Problèmes avec FileWriter / Générez une facture

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown