Java-Programmier-Problem

Dieses Thema im Forum "Java/Mono/dotGNU" wurde erstellt von Bigzed, 03.09.2008.

  1. Bigzed

    Bigzed Jungspund

    Dabei seit:
    26.05.2006
    Beiträge:
    12
    Zustimmungen:
    0
    Hallo Leute,

    ich programmiere gerade das erste mal an einem etwas komplexeren Problem in Java, allerdings scheiter ich schon an der ersten Ausgabe in das GUI. Mein Problem an dem ich scheiter ist wahrscheinlich ziemlich simpel. Ich habe mir eine Klasse "Pizzavision" geschrieben bzw. den ersten Keim davon und möchte einfach mal als Test über den Button1 auf der GUI diese Klasse erschaffen, ein paar Methoden ausführen und eine Ausgabe erhalten allerdings tut dieses Programm bis jetzt nur eine Fehlermeldung ausspucken, obwohl die Klasse und der GUI alleine Kompiliert werden können. Erst wenn ich auf den Button drücke passiert etwas unvorhergesehenes.

    Und zwar bekomme ich diese Fehlermeldung:
    Code:
    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 11
     at Pizzavision.<init>(Pizzavision.java:15)
     at PizzaAufgabe.button1_ActionPerformed(PizzaAufgabe.java:55)
     at PizzaAufgabe$2.actionPerformed(PizzaAufgabe.java:39)
     at java.awt.Button.processActionEvent(Button.java:392)
     at java.awt.Button.processEvent(Button.java:360)
     at java.awt.Component.dispatchEventImpl(Component.java:4413)
     at java.awt.Component.dispatchEvent(Component.java:4243)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    
    Doch ich weiß leider noch nichts damit anzufangen, daher wäre mir eine umfassende Erklärung ganz lieb :))
    Hier natürlich noch mein Quellcode
    GUI-Klasse
    Code:
    import java.awt.*;
    import java.awt.event.*;
    
    /**
      * Copyright
      *    by
      * Bigzed
      *
      *
      */
    
    public class PizzaAufgabe extends Frame {
      // Anfang Variablen
      private Button button1 = new Button();
      private Label label1 = new Label();
      // Ende Variablen
    
      public PizzaAufgabe(String title) {
        // Frame-Initialisierung
        super(title);
        addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent evt) { System.exit(0); }
        });
        int frameWidth = 300;
        int frameHeight = 300;
        setSize(frameWidth, frameHeight);
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (d.width - getSize().width) / 2;
        int y = (d.height - getSize().height) / 2;
        setLocation(x, y);
        Panel cp = new Panel(null);
        add(cp);
        // Anfang Komponenten
    
        button1.setBounds(112, 16, 75, 25);
        button1.setLabel("button1");
        button1.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent evt) {
            button1_ActionPerformed(evt);
          }
        });
        cp.add(button1);
        label1.setBounds(56, 128, 37, 16);
        label1.setText("label1");
        label1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
        cp.add(label1);
        // Ende Komponenten
    
        setResizable(false);
        setVisible(true);
      }
    
      // Anfang Ereignisprozeduren
      public void button1_ActionPerformed(ActionEvent evt) {
      Pizzavision pizza = new Pizzavision();
      pizza.addZutat("Erbsen");
      pizza.addZutat("Mais");
      pizza.deleteZutat("Mais");
      pizza.addZutat("Tomaten");
      label1.setText(pizza.showPizza());
      }
    
      // Ende Ereignisprozeduren
    
      public static void main(String[] args) {
        new PizzaAufgabe("PizzaAufgabe");
      }
    }
    
    Und hier die Klasse "Pizzavision" die ich erschaffe:

    Code:
    import java.awt.*;
    
    
    public class Pizzavision {
      Boolean zutaten[] = new Boolean[11];
    
      public Pizzavision() {
        //Zählvariable
        int i = 0;
    
        //Zutaten liste leeren
        while (i < 12) {
          zutaten[i] = false;
          i++;
        }
      }
    
      //Zutat hinzufügen
      public boolean addZutat(String zutat) {
        if (zutat == "Kaese") { //Käse:Index=0
          zutaten[0] = true;
    
          return true;
        } else if (zutat == "Tomatensosse") { //Tomatensosse:Index=1
          zutaten[1] = true;
    
          return true;
        } else if (zutat == "Tomaten") { //Tomaten:Index=2
          zutaten[2] = true;
    
          return true;
        } else if (zutat == "Oliven") { //Oliven:Index=3
          zutaten[3] = true;
    
          return true;
        } else if (zutat == "Zwiebeln") { //Zwiebeln:Index=4
          zutaten[4] = true;
    
          return true;
        } else if (zutat == "Kochschinken") { //Kochschinken:Index=5
          zutaten[5] = true;
    
          return true;
        } else if (zutat == "Ananas") { //Ananas:Index=6
          zutaten[6] = true;
    
          return true;
        } else if (zutat == "Champignos") { //Champignos:Index=7
          zutaten[7] = true;
    
          return true;
        } else if (zutat == "Salami") { //Salami:Index=8
          zutaten[8] = true;
    
          return true;
        } else if (zutat == "Thunfisch") { //Thunfisch:Index=9
          zutaten[9] = true;
    
          return true;
        } else if (zutat == "Mais") { //Mais:Index=10
          zutaten[10] = true;
    
          return true;
        } else if (zutat == "Erbsen") { //Erbsen:Index=10
          zutaten[11] = true;
    
          return true;
        } else {
          return false;
        }
      }
    
      //Zutat entfernen
      public boolean deleteZutat(String zutat) {
        if (zutat == "Kaese") { //Käse:Index=0
          zutaten[0] = false;
    
          return true;
        } else if (zutat == "Tomatensosse") { //Tomatensosse:Index=1
          zutaten[1] = false;
    
          return true;
        } else if (zutat == "Tomaten") { //Tomaten:Index=2
          zutaten[2] = false;
    
          return true;
        } else if (zutat == "Oliven") { //Oliven:Index=3
          zutaten[3] = false;
    
          return true;
        } else if (zutat == "Zwiebeln") { //Zwiebeln:Index=4
          zutaten[4] = false;
    
          return true;
        } else if (zutat == "Kochschinken") { //Kochschinken:Index=5
          zutaten[5] = false;
    
          return true;
        } else if (zutat == "Ananas") { //Ananas:Index=6
          zutaten[6] = false;
    
          return true;
        } else if (zutat == "Champignos") { //Champignos:Index=7
          zutaten[7] = false;
    
          return true;
        } else if (zutat == "Salami") { //Salami:Index=8
          zutaten[8] = false;
    
          return true;
        } else if (zutat == "Thunfisch") { //Thunfisch:Index=9
          zutaten[9] = false;
    
          return true;
        } else if (zutat == "Mais") { //Mais:Index=10
          zutaten[10] = false;
    
          return true;
        } else if (zutat == "Erbsen") { //Erbsen:Index=10
          zutaten[11] = false;
    
          return true;
        } else {
          return false;
        }
      }
    
      public String showPizza() {
        String Ausgabe;
        int i;
        Ausgabe = "";
    
        for (i = 0; i < 12; i++) {
          if (zutaten[i] == true) {
            Ausgabe = Ausgabe + i + ",";
          }
        }
    
        return Ausgabe;
      }
    
      private void clearZutaten() {
        int i; //Zählvariable
    
        //Zutaten liste leeren
        for (i = 0; i < 12; i++) {
          zutaten[i] = false;
        }
      }
    }
    ps.: schon mal Danke für die Hilfe
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 madfool, 03.09.2008
    madfool

    madfool Tripel-As

    Dabei seit:
    12.08.2004
    Beiträge:
    192
    Zustimmungen:
    0
    Du greifst auf ein 12. Array-Element zu welches es nicht gibt, denn du hast den Array mit 11 Speicherplätzen angelegt (ArrayIndexOutOfBoundsException):

    Code:
      Boolean zutaten[] = new Boolean[11];
    
    Hier werden 11 Einträge angelegt (0 - 10).

    Code:
        while (i < 12) {
          zutaten[i] = false;
          i++;
        }
    
    Von 0 bis 11 sind aber 12 Schritte.

    Gruß,
    D.
     
  4. Bigzed

    Bigzed Jungspund

    Dabei seit:
    26.05.2006
    Beiträge:
    12
    Zustimmungen:
    0
    Man bin ich doof. Stimmt ja der Indize gibt ja die Anzahl der Elemtente und nicht den Index des letzten Elemtens an. *autschn*
    Danke für die schnelle Hilfe!
     
  5. #4 JBR, 03.09.2008
    Zuletzt bearbeitet: 03.09.2008
    JBR

    JBR Fichtenschonung

    Dabei seit:
    18.03.2007
    Beiträge:
    561
    Zustimmungen:
    0
    Ort:
    Nolop
    http://www.bwinf.de

    PS: Du kannst natürlich Fragen stellen - aber wenn du darauf verzichten könntest die vollständige Implementierung zu posten wäre ich dir sehr verbunden
     
  6. foexle

    foexle Kaiser

    Dabei seit:
    02.05.2007
    Beiträge:
    1.104
    Zustimmungen:
    0
    Ort:
    Saarbrücken
    ausserdem würde ich dir kein AWT für ein GUI empfehlen sondern swing !
     
  7. Bigzed

    Bigzed Jungspund

    Dabei seit:
    26.05.2006
    Beiträge:
    12
    Zustimmungen:
    0
    Ja, tut mir leid, ich hab vielleicht etwas viel Quelltext gepostet. Werde ich beim nächsten mal beachten.
    Das ich Swing benutzen sollte hab ich auch schon gelesen aber darf ich fragen was genau der Vorteil ist?

    lg
    bigzed
     
  8. #7 GambaJo, 05.09.2008
    GambaJo

    GambaJo Maxi King alraaaight!!!

    Dabei seit:
    08.01.2008
    Beiträge:
    171
    Zustimmungen:
    0
    Darauf tanzt es sich besser :D


     
  9. Bigzed

    Bigzed Jungspund

    Dabei seit:
    26.05.2006
    Beiträge:
    12
    Zustimmungen:
    0
    Ok dann weß ich jetzt warum man Swing-Komponenten nehmen sollte.
    So da ich gerade ja eigentlich mein erstes Projekt in Java schreibe und ich dafür Bildbearbeitungs Bibliotheken gebrauchen könnte wollte ich mal fragen, ob jemand von euch ein gutes Tutorial in diese Richtung kennt. Bis jetzt hab ich nur ein halbwegs gutes Gefunden und das wäre der Abschnitt über dieses Thema von Galileocomputing und "Java ist auch nur eine Insel".

    lg
    bigzed
     
  10. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  11. JBR

    JBR Fichtenschonung

    Dabei seit:
    18.03.2007
    Beiträge:
    561
    Zustimmungen:
    0
    Ort:
    Nolop
    Da die Urkunden ja nun alle Verschickt sein sollten: Wie ist es bei dir gelaufen ?
     
  12. Ticha

    Ticha Linux Missionar

    Dabei seit:
    21.07.2006
    Beiträge:
    814
    Zustimmungen:
    0
    Benutz für Swing am besten NetBeans. Da hast du ein KlickiBunti tool für Swing. Das macht das ganze sehr einfach. Aber sei dir Gewiss, dass Swing sehr kompliziert ist.

    greetz Ticha
     
Thema:

Java-Programmier-Problem