Copier un objet vers une autre liste et le supprimer de la première
Bonjour à tous!
Alors voilà j'ai un petit problème :aie:
J'ai la classe suivante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| import java.util.ArrayList;
import java.util.List;
public class Commande {
private List<Produit> produits_commandes;
public Commande() {
produits_commandes = new ArrayList<Produit>();
}
public void CommanderProduits(String nom_client, List<String> produits) {
for (String prod : produits){
int i;
i=0;
for (int j=ProduitsEnVente.getProducts().size()-1;i>0;j--){
Produit prodbis = ProduitsEnVente.getProducts().get(j);
if (prod==prodbis.getNom_produit() && i<1){
produits_commandes.add(prodbis);
ProduitsEnVente.getInstance();
ProduitsEnVente.getProducts().remove(j);
i++;
}
}
}
String compo = new String();
for (Produit prod2 : produits_commandes){
ProduitsEnVente.getInstance();
compo = compo +" "+prod2.getNom_produit();
}
System.out.println("Mr "+nom_client+" vient de passer une commande: : "+compo+"");
}
} |
Le but de la méthode CommanderProduits() c'est de regarder, pour chaque String de la liste produits (2 String peuvent être identiques), s'il existe dans le stock de produits (Singleton), un objet Produit qui a ce nom. Si c'est le cas, on ajoute cet objet à la liste produits_commandes (variable d'instance de le classe Commande), et on le supprime du stock de produits.
Test:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| ProduitsEnVente.getInstance();
ProduitsEnVente.DecrisStock();
List<String> produits = new ArrayList<String>();
produits.add("frite");
produits.add("frite");
produits.add("Big Mac");
produits.add("frite");
Commande com1 = new Commande();
com1.CommanderProduits("Elodie", produits);
ProduitsEnVente.getInstance();
ProduitsEnVente.DecrisStock(); |
Sachant qu'il y a plus de 3 frites et 1 Big Mac dans le stock donc pas de soucis de ce côté là :)
Résultat:
Code:
1 2 3
| Le stock de produits est : Big Mac Big Mac Big Mac frite frite frite frite frite frite frite frite frite frite frite frite
Mr Elodie vient de passer une commande: :
Le stock de produits est : Big Mac Big Mac Big Mac frite frite frite frite frite frite frite frite frite frite frite frite |
Rien n'est ajouté à la commande ni enlevé du stock...
2ème essai pour la méthode CommanderProduits:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public void CommanderProduits(String nom_client, List<String> produits) {
int i;
for (String prod : produits){
i=0;
ProduitsEnVente.getInstance();
for (Produit prodbis : ProduitsEnVente.getProducts()){
if (prod==prodbis.getNom_produit() && i<1){
produits_commandes.add(prodbis);
i++;
}
}
}
ProduitsEnVente.getInstance();
ProduitsEnVente.getProducts().removeAll(produits_commandes);
String compo = new String();
for (Produit prod2 : produits_commandes){
compo = compo +" "+prod2.getNom_produit();
}
System.out.println("Mr "+nom_client+" vient de passer une commande: : "+compo+"");
} |
Le test ne change pas.
Code:
1 2 3
| Le stock de produits est : Big Mac Big Mac Big Mac frite frite frite frite frite frite frite frite frite frite frite frite
Mr Elodie vient de passer une commande: : frite frite Big Mac frite
Le stock de produits est : Big Mac Big Mac frite frite frite frite frite frite frite frite frite frite frite |
Au moins ici çà fait quelque chose. Ce qui est bien c'est que ce qu'y est commandé est ajoutée à la commande mais lorsque l'on commande plusieurs produits ayant le même nom il n'en retire qu'un (comme ici avec "frite").
Si quelqu'un voit ce qui m'embête depuis plus de 3h :aie:...