Hi Leute,
im lager muss ich Produkte aufnehmen und wenn der Produkt schon vorhanden ist muss ich vermehren und falls nicht muss ich neue aufnehmen. ist das richtig wie ich Map durchlaufe? Leider wird bei mir in der klasse lager auf der zeile 17 feler geworfen wenn ich
schreiben möchte.
im lager muss ich Produkte aufnehmen und wenn der Produkt schon vorhanden ist muss ich vermehren und falls nicht muss ich neue aufnehmen. ist das richtig wie ich Map durchlaufe? Leider wird bei mir in der klasse lager auf der zeile 17 feler geworfen wenn ich
Java:
aktuelleProdukt.getAnzahl() += p.getAnzahl()
Java:
public class Produkt {
private String bezeichnung;
private int preis;
private int anzahl;
private String beschreibung ;
public Produkt(String bezeichnung, int preis, int anzahl, String beschreibung) throws Exception {
setAnzahl(anzahl);
setBezeichnung(bezeichnung);
setPreis(preis);
setbeschreibung(beschreibung);
}
public void setbeschreibung( String beschreibung) throws Exception{
if(beschreibung == null || beschreibung.length() == 0){
throw new Exception("beschreibung darf nicht null sein oder die länge 0 haben");
}
this.beschreibung = beschreibung;
}
public void setAnzahl(int anzahl) throws Exception {
if (anzahl < 0) {
throw new Exception("Produkteanzahl darf nicht unter 0 sein");
}
this.anzahl = anzahl;
}
public int getAnzahl() {
return anzahl;
}
public void aufbuchen(int anzahl)throws Exception{
anzahl += getAnzahl();
}
public void abbuchen(int anzahl) throws Exception{
if(getAnzahl() < anzahl){
throw new Exception("Es ist nicht genuege Menge vorhanden");
}
anzahl -= getAnzahl();
}
private void setBezeichnung(String bezeichnung) throws Exception {
if (bezeichnung == null) {
throw new Exception("bezeichnung darf nicht nul sein");
}
if(!bezeichnung.matches("[A-Z\\d ]{10}")){
throw new Exception("bezeichnung soll die Laenge 10 haben und grossbuchstaben, ziffern und leerraum enthalten");
}
this.bezeichnung = bezeichnung;
}
public String getBezeichnung() {
return bezeichnung;
}
public void setPreis(int preis) throws Exception {
if (preis < 1) {
throw new Exception("Preis muss mehr als 1 cent sein");
}
this.preis = preis;
}
public int getPreis() {
return preis;
}
public boolean equals(Object obj) {
if (obj instanceof Produkt) {
Produkt p = (Produkt) obj;
return p.bezeichnung.equals(bezeichnung);
}
return false;
}
public String toString() {
StringBuilder builder = new StringBuilder();
return builder.append(bezeichnung).append(", ").append(anzahl)
.append(" Stueck ,").append(preis).append(" cent/stueck")
.toString();
}
}
Java:
import java.util.Collection;
import java.util.HashMap;
public class Lager {
HashMap<String,Produkt > produkte = new HashMap<String ,Produkt>();
public void aufbuchen(Produkt p) throws Exception {
if(produkte.containsKey(p.getBezeichnung())){
Collection< Produkt> elems = produkte.values();
for(Produkt aktuelleProdukt : elems ){
if(aktuelleProdukt.getBezeichnung().equals(p.getBezeichnung())){
aktuelleProdukt.getAnzahl() += p.
}
}
}
}
public String toString() {
StringBuilder builder = new StringBuilder();
Collection<Produkt> elems = produkte.values();
for (Produkt p : elems) {
builder.append(p.toString()).append("\n");
}
return builder.toString();
}
}