Jeszcze mam pytanie. Napisałem funkcję scan która jest odpowiedzialna za sprawdzanie czy dany produkt jest w bazie, i kolejno sprawdza jeżeli id znajduje się w bazie to idź dalej, jeżeli cena z id produktu oraz nazwa zgadza sie z tym z bazy to dodaj produkt do mapy a jeżeli nie to wywal błąd "Invalid bar-code".
I w tym problem, że jak widać w kodzie sprawdzam bazę produktów iterując od 0 do produkty.size()-1 i wyświetla mi się przy tym kilka razy "Invalid bar-code" a chciałbym żeby wyświetlało się tylko raz.
Jest ktoś w stanie pomóc? Kod ponizej:
import java.math.BigDecimal;
import java.util.*;
public class CashRegister {
private static Map<Integer, Products> produkty = new HashMap<Integer, Products>();
private static Map<Integer, Products> paragon = new HashMap<Integer, Products>();
static BigDecimal a = new BigDecimal(0);
private static int f=0;
public static void start()
{
produkty.put(0,new Products(0,"Smietana",new BigDecimal(130)));
produkty.put(1,new Products(1,"Masło",new BigDecimal(7.3123)));
produkty.put(2,new Products(2,"Mleko",new BigDecimal(3.8)));
produkty.put(3,new Products(3,"Bułka",new BigDecimal(0.832)));
produkty.put(4,new Products(4,"Czipsy",new BigDecimal(8.42)));
produkty.put(5,new Products(5,"Płatki śniadaniowe",new BigDecimal(7.00)));
System.out.println(produkty.get(5));
}
void scan(Products p)
{
String ErrorException = "Good";
if(produkty.containsKey(p.getIdProduct()))
{
for(int i=0;i<produkty.size();i++)
{
if((produkty.get(i).getNameProduct().equals(p.getNameProduct())) && (produkty.get(i).getPrice().equals(p.getPrice())))
{
paragon.put(f,p);
f++;
//System.out.println(paragon);
}
else if(!((produkty.get(i).getNameProduct().equals(p.getNameProduct())) || (produkty.get(i).getPrice().equals(p.getPrice()))))
{
{ System.out.println("Invalid bar-code");
ErrorException = "Invalid bar-code";
}
}
}
else
System.out.println("ID: " + p.getIdProduct() + " is not found");
System.out.println(paragon);
}