Ergebnis 1 bis 10 von 10
-
05.05.2012, 11:33 #1MasterSansai
JavaProgramm funktioniert nicht wie es soll
Ich bin relativ am anfang von Java, und soll als Hausaufgabe ein Programm erstelllen für ein Pizza Lieferdienst, dazu soll in dem Programm die Anzahl der 8 Sortedn Pizzen angegeben werden und am ende ausgerechnet werden.
Bei meinen Programm ist aber das problem, das er nur das letzte zählt und das als 8, also dass da als gesammtpreis "8.0 €" steht
Hier mein Programm:
Code:import java.awt.*; import java.awt.event.*; public class pizza extends CFrame implements ActionListener , TextListener { Label[] label; TextField[] anzahl; Button loeschen; int an=13; int an2=9; String[] an3; double[] an4; Font f1,f2; double p1=2.5, p2=3.5, p3=5; int y1=40; int y = y1; int yz; int x1=20, x2=250, x3=355; int b1=500, b2=150, b3=40; int h=25; int a=35; public pizza() { super("Pizza Service la Migliore"); setSize(600,700); setLayout(null); label = new Label[an]; anzahl = new TextField[an2]; an3 = new String [an2]; an4 = new double [an2]; f2 = new Font("Dialog",Font.PLAIN, 12); f1 = new Font("Dialog",Font.BOLD, 13); label[1] = new Label("Willkommen bei Pizza Service la Migliore. Bitte geben sie ihr Bestellung auf"); label[1].setBounds(x1,y1,b1,h); label[1].setFont(f1); add(label[1]); y=y+a; label[2] = new Label("Unsere Auswahl"); label[2].setBounds(x1,y,b2,h); label[2].setFont(f1); add(label[2]); label[11] = new Label("Anzahl"); label[11].setBounds(x2,y,b2,h); label[11].setFont(f1); add(label[11]); y=y+a; label[3] = new Label("Pizza Margerita 2,50€"); label[3].setBounds(x1,y,b2,h); add(label[3]); anzahl[1] = new TextField(); anzahl[1].setBounds(x2,y,b3,h); anzahl[1].addTextListener(this); add(anzahl[1]); y=y+a; label[4] = new Label("Pizza Salami 3,50€"); label[4].setBounds(x1,y,b2,h); add(label[4]); anzahl[2] = new TextField(); anzahl[2].setBounds(x2,y,b3,h); anzahl[2].addTextListener(this); add(anzahl[2]); y=y+a; label[5] = new Label("Pizza Calzone 3,50€"); label[5].setBounds(x1,y,b2,h); add(label[5]); anzahl[3] = new TextField(); anzahl[3].setBounds(x2,y,b3,h); anzahl[3].addTextListener(this); add(anzahl[3]); y=y+a; label[6] = new Label("Pizza Inferno 3,50€"); label[6].setBounds(x1,y,b2,h); add(label[6]); anzahl[4] = new TextField(); anzahl[4].setBounds(x2,y,b3,h); anzahl[4].addTextListener(this); add(anzahl[4]); y=y+a; label[7] = new Label("Döner Pizza 3,50€"); label[7].setBounds(x1,y,b2,h); add(label[7]); anzahl[5] = new TextField(); anzahl[5].setBounds(x2,y,b3,h); anzahl[5].addTextListener(this); add(anzahl[5]); y=y+a; label[8] = new Label("Pizza Schinken 3,50€"); label[8].setBounds(x1,y,b2,h); add(label[8]); anzahl[6] = new TextField(); anzahl[6].setBounds(x2,y,b3,h); anzahl[6].addTextListener(this); add(anzahl[6]); y=y+a; label[9] = new Label("4 Käse Pizza 3,50€"); label[9].setBounds(x1,y,b2,h); add(label[9]); anzahl[7] = new TextField(); anzahl[7].setBounds(x2,y,b3,h); anzahl[7].addTextListener(this); add(anzahl[7]); y=y+a; label[10] = new Label("Pizza Fantastico 5,00€"); label[10].setBounds(x1,y,b2,h); add(label[10]); anzahl[8] = new TextField(); anzahl[8].setBounds(x2,y,b3,h); anzahl[8].addTextListener(this); add(anzahl[8]); y=y+a; label[11] = new Label("Gesammtpreis: "); label[11].setBounds(x1,y,b2,h); add(label[11]); yz=y+a; loeschen = new Button("Löschen"); loeschen.setBounds(x2,yz,b2,h); loeschen.addActionListener(this); add(loeschen); setVisible(true); } public void textValueChanged(TextEvent event) { for(int i=1; i < an2; i++) { an3[i]= anzahl[i].getText(); an4[i]= Double.parseDouble(an3[i]); } double[] an5; an5 = new double [an2]; an5[1]=an4[1]*2.5; an5[2]=an4[2]*3.5; an5[3]=an4[3]*3.5; an5[4]=an4[4]*3.5; an5[5]=an4[5]*3.5; an5[6]=an4[6]*3.5; an5[7]=an4[7]*3.5; an5[8]=an4[8]*5; double g; g=an4[1]+an4[2]+an4[3]+an4[4]+an4[5]+an4[6]+an4[7]+an4[8]; label[12] = new Label(g+ " €"); label[12].setBounds(x2,y,b2,h); add(label[12]); } public void loeschenKlick() { } public void actionPerformed(ActionEvent e) { Object absender; absender = e.getSource(); if(absender.equals(loeschen)) loeschenKlick(); } public static void main(String[] args) { new pizza(); } }
MfG MasterSansai
PS: ich weiß das programm ist noch nicht ganz fertig, den "Löschen button" muss ich noch programmieren ^^
-
JavaProgramm funktioniert nicht wie es soll
Schau dir mal diesen Bereich an. Dort ist für jeden was dabei!
-
05.05.2012, 16:29 #2HardAndSoft
AW: JavaProgramm funktioniert nicht wie es soll
Das ist ein unkommentierter Spaghetti-Code, den ich unseren Azubis um die Ohren hauen würde.
Bei sowas sucht man sich im Fehlerfalle immer tot.
Der Fehler liegt in diesem Teil:
=========================================
double[] an5;
an5 = new double [an2];
an5[1]=an4[1]*2.5;
an5[2]=an4[2]*3.5;
an5[3]=an4[3]*3.5;
an5[4]=an4[4]*3.5;
an5[5]=an4[5]*3.5;
an5[6]=an4[6]*3.5;
an5[7]=an4[7]*3.5;
an5[8]=an4[8]*5;
double g;
g=an4[1]+an4[2]+an4[3]+an4[4]+an4[5]+an4[6]+an4[7]+an4[8]
label[12] = new Label(g+ " €");
label[12].setBounds(x2,y,b2,h);
add(label[12]);
=========================================
Du gibst Dir alle Mühe, in an5 die Preise der Einzelpositionen auszurechnen (rot markiert). Dann summierst Du für die Gesamtsumme aber wieder die Anzahlen aus an4 (blau markiert).
Auf diese Art kommt natürlich immer die Summe der Anzahlen und nicht die Summe der Beträge raus.
Sowas passiert immer, wenn man die Variablen nicht sprechend benennt. Wenn Du anstelle "an4" die Variable "Anzahl" genannt hättest, und anstelle "an5" die Variable "Teilsumme", dann käme so ein Fehler niemals vor.
-
05.05.2012, 21:09 #3MasterSansai
-
05.05.2012, 21:51 #4HardAndSoft
AW: JavaProgramm funktioniert nicht wie es soll
Es war eigentlich genau anders herum gemeint, also:
Diese Zeile raus
g=an4[1]+an4[2]+an4[3]+an4[4]+an4[5]+an4[6]+an4[7]+an4[8];
Diese Zeile rein
g=an5[1]+an5[2]+an5[3]+an5[4]+an5[5]+an5[6]+an5[7]+an5[8];
-
06.05.2012, 13:18 #5MasterSansai
AW: JavaProgramm funktioniert nicht wie es soll
mein script jetzt:
Code:import java.awt.*; import java.awt.event.*; public class pizza extends CFrame implements ActionListener { Label[] label; TextField[] anzahl; Button loeschen, berechnen; int an=13; int an2=9; String[] an3; double[] an4; Font f1,f2; double p1=2.5, p2=3.5, p3=5; int y1=40; int y = y1; int yz; int x1=20, x2=250, x3=355; int b1=500, b2=150, b3=40; int h=25; int a=35; double[] an5; public pizza() { super("Pizza Service la Migliore"); setSize(600,700); setLayout(null); label = new Label[an]; anzahl = new TextField[an2]; an3 = new String [an2]; an4 = new double [an2]; an5 = new double [an2]; f2 = new Font("Dialog",Font.PLAIN, 12); f1 = new Font("Dialog",Font.BOLD, 13); label[1] = new Label("Willkommen bei Pizza Service la Migliore. Bitte geben sie ihr Bestellung auf"); label[1].setBounds(x1,y1,b1,h); label[1].setFont(f1); add(label[1]); y=y+a; label[2] = new Label("Unsere Auswahl"); label[2].setBounds(x1,y,b2,h); label[2].setFont(f1); add(label[2]); label[11] = new Label("Anzahl"); label[11].setBounds(x2,y,b2,h); label[11].setFont(f1); add(label[11]); y=y+a; label[3] = new Label("Pizza Margerita 2,50€"); label[3].setBounds(x1,y,b2,h); add(label[3]); anzahl[1] = new TextField("0"); anzahl[1].setBounds(x2,y,b3,h); add(anzahl[1]); y=y+a; label[4] = new Label("Pizza Salami 3,50€"); label[4].setBounds(x1,y,b2,h); add(label[4]); anzahl[2] = new TextField("0"); anzahl[2].setBounds(x2,y,b3,h); add(anzahl[2]); y=y+a; label[5] = new Label("Pizza Calzone 3,50€"); label[5].setBounds(x1,y,b2,h); add(label[5]); anzahl[3] = new TextField("0"); anzahl[3].setBounds(x2,y,b3,h); add(anzahl[3]); y=y+a; label[6] = new Label("Pizza Inferno 3,50€"); label[6].setBounds(x1,y,b2,h); add(label[6]); anzahl[4] = new TextField("0"); anzahl[4].setBounds(x2,y,b3,h); add(anzahl[4]); y=y+a; label[7] = new Label("Döner Pizza 3,50€"); label[7].setBounds(x1,y,b2,h); add(label[7]); anzahl[5] = new TextField("0"); anzahl[5].setBounds(x2,y,b3,h); add(anzahl[5]); y=y+a; label[8] = new Label("Pizza Schinken 3,50€"); label[8].setBounds(x1,y,b2,h); add(label[8]); anzahl[6] = new TextField("0"); anzahl[6].setBounds(x2,y,b3,h); add(anzahl[6]); y=y+a; label[9] = new Label("4 Käse Pizza 3,50€"); label[9].setBounds(x1,y,b2,h); add(label[9]); anzahl[7] = new TextField("0"); anzahl[7].setBounds(x2,y,b3,h); add(anzahl[7]); y=y+a; label[10] = new Label("Pizza Fantastico 5,00€"); label[10].setBounds(x1,y,b2,h); add(label[10]); anzahl[8] = new TextField("0"); anzahl[8].setBounds(x2,y,b3,h); add(anzahl[8]); y=y+a; label[11] = new Label("Gesammtpreis: "); label[11].setBounds(x1,y,b2,h); add(label[11]); yz=y+a; berechnen = new Button("Berechnen"); berechnen.setBounds(x2,yz,b2,h); berechnen.addActionListener(this); add(berechnen); yz=yz+a; loeschen = new Button("Löschen"); loeschen.setBounds(x2,yz,b2,h); loeschen.addActionListener(this); add(loeschen); setVisible(true); } public void berechnenKlick() { for(int i=1; i < an2; i++) { an3[i]= anzahl[i].getText(); an4[i]= Double.parseDouble(an3[i]); } an5[1]=0; an5[2]=0; an5[3]=0; an5[4]=0; an5[5]=0; an5[6]=0; an5[7]=0; an5[8]=0; an5[1]=an4[1]*2.5; an5[2]=an4[2]*3.5; an5[3]=an4[3]*3.5; an5[4]=an4[4]*3.5; an5[5]=an4[5]*3.5; an5[6]=an4[6]*3.5; an5[7]=an4[7]*3.5; an5[8]=an4[8]*5; double g; g=an5[1]+an5[2]+an5[3]+an5[4]+an5[5]+an5[6]+an5[7]+an5[8]; label[12] = new Label(g+ " €"); label[12].setBounds(x2,y,b2,h); add(label[12]); } public void loeschenKlick() { for(int i2=1; i2 < an2; i2++) { an5[i2] = 0; } } public void actionPerformed(ActionEvent e) { Object absender; absender = e.getSource(); if(absender.equals(berechnen)) berechnenKlick(); if(absender.equals(loeschen)) loeschenKlick(); } public static void main(String[] args) { new pizza(); } }
-
06.05.2012, 13:31 #6HardAndSoft
AW: JavaProgramm funktioniert nicht wie es soll
Wenn ich das richtig sehe, passiert folgendes: Bei einem Klick auf "Löschen" lässt Du die Löschroutine laufen. Diese stößt aber von sich aus keine Aktualisierung des Feldes label[12] an. Du müsstest nach jedem Löschen automatisch auch einmal "berechnen" laufen lassen, erst dann kann das funktionieren.
Dabei musst Du allerdings bzgl. actionPerformed aufpassen, dass Du nicht in eine Ausführungskaskade gelangst.
Viel Erfolg!
-
06.05.2012, 14:32 #7MasterSansai
AW: JavaProgramm funktioniert nicht wie es soll
ok, ich habe so probiert, und er löscht es auch, aber wer will es jetzt nicht mehr neu berechnen wenn ich auf den dafür vor gesehenen button klicke, ich schicke jetzt mal nur die Methode loeschenKlick() da sich der rest nicht geändert hat
Code:public void loeschenKlick() { for(int i2=1; i2 < an2; i2++) { an5[i2] = 0; anzahl[i2].setText("0"); } double g; g=an5[1]+an5[2]+an5[3]+an5[4]+an5[5]+an5[6]+an5[7]+an5[8]; label[12].setText(g+" €"); }
-
07.05.2012, 18:31 #8HardAndSoft
AW: JavaProgramm funktioniert nicht wie es soll
Das sieht OK aus. Der Fehler muss an der Stelle stecken, wo Du die Löschroutine eingebaut hast.
-
07.05.2012, 20:06 #9MasterSansai
AW: JavaProgramm funktioniert nicht wie es soll
Vielen Dank das du dir die Mühe gegeben hast mir zu Helfen ^^
MfG MasterSansai
-
20.05.2012, 15:40 #10Holly
AW: JavaProgramm funktioniert nicht wie es soll
Heii hätte mal ne frage an MasterSansai ob du vllt. mal den fertigen code hier reinstellen könntest würde mir das gerne mal ansehen
Mfg
Holly
Ähnliche Themen
-
Neues board mit arbeitsspeicher aber funktioniert nicht wie soll: hallo hab mir vor paar tagen ein neues board mit arbeitsspeicher und cpu gegönnt. es handelt sich um MSI Z97 Gaming 3 G Skill TridentX... -
Youtube funktioniert nicht (Steuerungsleiste funktioniert nicht): Hallo, Ich habe bereits im internet herum geschaut, aber mein problem konnte ich noch nicht lösen. Wenn ich mir bei youtube videos anschaue, habe... -
Neue GraKa wird nicht erkannt und funktioniert nicht!!!!! HILFE: Hallo, ich habe ein Problem. Ich hatte nen neuen Pc gekauft, der hatte nur eine GMB (Onboard Graka von Intel) Grafik-Media-Beschleuniger) oder... -
Cdrom Laufwerk funktioniert nicht mehr! (CD dreht sich nicht): Hi zusammen, ich habe ein ganz ganz großes Problem! Bei meiner Wii läuft das Cdrom Laufwerk nicht mehr, sie geht zwar an aber die Cd will sich... -
Schon wieder ein Newbie der nicht weiß warum sein Banner nicht funktioniert: Also hab mal von einer Internetseite den HTML Code abgekuckt und die Adresse von meiner rein gemacht. Aber jetzt funktioniert er nicht. Kann man...
Nachdem meine CD aus Anfang 2000 natürlich nicht mehr funktioniert hat, habe ich mir gestern die Siedler IV History Edition für 8,99 € bei Ubisoft...
Welches PC Spiel habt ihr euch zuletzt gekauft?