Ergebnis 1 bis 10 von 10
  1. #1
    MasterSansai MasterSansai ist offline
    Avatar von MasterSansai

    JavaProgramm funktioniert nicht wie es soll

    Morgen Forumla

    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();
        }
        
    }
    ich hoffe das mir jemand Helfen kann

    MfG MasterSansai

    PS: ich weiß das programm ist noch nicht ganz fertig, den "Löschen button" muss ich noch programmieren ^^

  2. Anzeige

    JavaProgramm funktioniert nicht wie es soll

    Schau dir mal diesen Bereich an. Dort ist für jeden was dabei!
  3. #2
    HardAndSoft HardAndSoft ist offline
    Avatar von HardAndSoft

    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.

  4. #3
    MasterSansai MasterSansai ist offline
    Avatar von MasterSansai

    AW: JavaProgramm funktioniert nicht wie es soll

    Zitat HardAndSoft Beitrag anzeigen
    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.
    vorweg, danke für die antwort ^^

    daran liegt es nicht, ich hab schon ein wenig probiewrt, und das an5 hatte ich auch nur als test eingefügt vorher war das an4

    MfG
    MasterSansai

  5. #4
    HardAndSoft HardAndSoft ist offline
    Avatar von HardAndSoft

    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];

  6. #5
    MasterSansai MasterSansai ist offline
    Avatar von MasterSansai

    AW: JavaProgramm funktioniert nicht wie es soll

    so, also ich hab es Probiert, und es hat einiger maßen funktioniert, ich habe den TextListner rausgenommen, da der nicht so wollte, wie er sollte (war eh nur optional). Jetzt rechnet er das richtig aus, doch ich habe jetzt ein weiteres Problem, ich soll noch eine Funktion einfügen, der dafür sorgt das er die bisherige gesammt summe löscht und man diese neu berechnen kann, dies funktioniert aber nicht.

    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();
        }
        
    }

  7. #6
    HardAndSoft HardAndSoft ist offline
    Avatar von HardAndSoft

    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!

  8. #7
    MasterSansai MasterSansai ist offline
    Avatar von MasterSansai

    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+" €");
            
        }

  9. #8
    HardAndSoft HardAndSoft ist offline
    Avatar von HardAndSoft

    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.

  10. #9
    MasterSansai MasterSansai ist offline
    Avatar von MasterSansai

    AW: JavaProgramm funktioniert nicht wie es soll

    Danke für die Antwort, ich hab den Fehler inzwischen gefunden: es lag daran, das das Label zum anzeigen beim zweiten ausrechnen verschoben hat, ich habe es inzwischen behoben und das Programm funktiert nun einwandfrei so wie es soll.

    Vielen Dank das du dir die Mühe gegeben hast mir zu Helfen ^^

    MfG MasterSansai

  11. #10
    Holly

    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


  1. 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...

  2. 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...

  3. 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...

  4. 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...

  5. 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...