J
JTB
Gast
Habe folgenden Code und suche seit ca. 6 Stunden warum ich das cniht copyn kann
Wenn ich normal zwei Artikel kopiere funktioniert das. Scheinbar. Aber wenn ich es in dieser klasse aufrufe, gibts die ober erwähnten Fehler. Also braucht euch nur raunehmen() ODER listeanzeigen() ODER wert() angucken ist bei allen das gleiche Problem. Weil da halt copy() aufgerufen wird.
Wenn falscher Bereich dann bitte verschieben.
LG
JTB
Code:
class Artikel
{
int artNr; // Artikelnr
double einzelpreis;
int anzahl;
Artikel weitere; // weitere Artikel in diesem Korb werden
// hier angehängt.
Artikel (int art , int anz , double preis){
artNr = art;
einzelpreis = preis;
anzahl = anz;
}
public Artikel copy(){
Artikel kopie;
kopie=new Artikel(artNr,anzahl,einzelpreis);
if (weitere==null){
return kopie;
}else{
kopie.weitere=weitere.copy();
return kopie;
}
}
}
Wenn ich normal zwei Artikel kopiere funktioniert das. Scheinbar. Aber wenn ich es in dieser klasse aufrufe, gibts die ober erwähnten Fehler. Also braucht euch nur raunehmen() ODER listeanzeigen() ODER wert() angucken ist bei allen das gleiche Problem. Weil da halt copy() aufgerufen wird.
Code:
public class Warenkorb {
int wkId; // eindeutige Nr. des Korbs
int kdNr; // eindeutige Nr. des Kunden, der diesen WK benutzt
long zeit;
Artikel imKorb;
double warenwert (){
return wert(imKorb);
}
private double wert(Artikel rest){
Artikel korb1 = rest.copy();
double erg;
if (korb1==null){
return 0;
}else{
erg = korb1.anzahl*korb1.einzelpreis;
erg+= this.wert(korb1.weitere);
}
return erg;
}
public void inDenKorb(Artikel a){
if(imKorb==null){
imKorb= new Artikel(a.artNr,a.anzahl,a.einzelpreis);
}else{
imKorb.weitere=imKorb;
imKorb.anzahl=a.anzahl;
imKorb.artNr=a.artNr;
imKorb.einzelpreis=a.einzelpreis;
}
}
public void rausnehmen(Artikel a){
Artikel ueber = imKorb.copy();
while (ueber!=null){
if (ueber.artNr==a.artNr){
if (ueber.anzahl<= a.anzahl){
ueber=ueber.weitere.copy();
}else{
ueber.anzahl-=a.anzahl;
}
}
ueber=ueber.weitere;
}
}
public void listeanzeigen(){
Artikel ueber = imKorb.copy();
//while (ueber!=null){
//System.out.println("ArtNr.:"+ueber.artNr+" Anzahl:"+ueber.anzahl+" Preis"+ueber.einzelpreis);
//ueber=ueber.weitere;
//}
}
Warenkorb (int wk, int kd, long zeitstempel){
this.wkId=wk;
this.kdNr=kd;
this.zeit=zeitstempel;
}
}
Wenn falscher Bereich dann bitte verschieben.
LG
JTB