Håller på och meckar lite med en simpel kundvagn men skulle behöva få till en funktion som är rätt bra att ha.
Har gjort ett program med en arraylista där man kan lägga till varor med Namn, antal och pris samt ta bort varor och söka varor och se aktuell lagerstatus. Så långt är allt bra men problemet kommer när jag ska ta bort varor.
Lyckas inte göra så att jag kan ta bort endast en av varor utan alla försvinner.
Alltså, jag lägger till Bröd, 12 st och 15:-. Sen vill jag ta bort endast ett bröd, hur gör jag då?
Såhär ser koden ut för min removefunktion.
jTextArea1.setText(null);
String sok=jTextField4.getText();
Vara soktVara=null;
if(minavaror==null){
minavaror=Kundvagn.getKundvagn();
}
for (Vara varan:minavaror){
if(varan.getnamn().equalsIgnoreCase(sok) ){
soktVara=varan;
minavaror.remove(varan);
break;
}
}
if (soktVara!=null){
jTextArea1.append(soktVara.getnamn()+" har tagits bort.");
}
else{
jTextArea1.append(sok+" finns inte i lager.");
}
Hur gör man så att varje vara man lägger till får ett ID?
Längst upp i koden för mitt GUI initierar jag min array på detta viset;
Sen har jag en separat fil där jag har alla mina set och get metoder samt variabler som håller namn, antal och pris.
ArrayList<Vara> minavaror=Kundvagn.getKundvagn();
Såhär ser min kod för att lägga till en vara ut:
Vara nyvara = new Vara();
jTextArea1.setText(null);
try {
if(minavaror==null){
minavaror=Kundvagn.getKundvagn();
}
nyvara.setNamn(jTextField1.getText() );
nyvara.setPris(Double.parseDouble( jTextField2.getText() ));
nyvara.setAntal(Integer.parseInt( jTextField3.getText() ));
minavaror.add(nyvara);
// Skriver ut i textarean
jTextArea1.append("Vara\tPris\tAntal\tSumma\n\n"+nyvara.getnamn()+"\t"+NumberFormat.getInstance().format(nyvara.getpris())+":-\t"
+nyvara.getAntal()+" st\t"+NumberFormat.getInstance().format(nyvara.getpris()*nyvara.getAntal() )+":-");
}
catch(NumberFormatException exp) {
JOptionPane.showMessageDialog(rootPane, "Var vänlig fyll i alla fält korrekt.");
}
}
Garrets metod funkar dock perfekt för att minska antalet men smidigare hade kanske varit att man även får välja hur många man vill ta bort på något sätt. Alltså ett till textfält där man får mata in hur många man vill ta bort och på något sätt knyta ihop det hela.
Du minskar alltså antalet på den valda varan med det antal du skrivit in i textfält tbAntal.
Ang. ID per vara kan du använda det id som kommer från listan för att göra det enkelt, men det jag tror Findah och blomquist menar är att varje vara har ett uníkt id, t.ex. Vara 1 har id 12345 som man sedan använder för att identifiera vilken vara som ska tas bort ur kundvagnen.
Har inte sysslat med denna typ av programmering så förslaget kanske inte ger något.
Jag antar att det är såhär många populära sidor gör. Att istället ha en lyssnare som kollar när man har markerat fältet med antal och sen när något annat markeras eller en knapp trycks så uppdateras antalet och totalpris t ex. Då kan man ju enkelt ändra antalet båda uppåt eller neråt utan att behöva fylla i hur man man vill lägga till eller ta bort.
Har inte kodat till hemsidor så vet inte hur svårt sånt här är att fixa men känns inte som det borde vara allt för omöjligt.