tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
153
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Saban Saban ist offline Mitglied Gold
    Registriert seit
    Nov 2007
    Beiträge
    220
    Hallo Zusammen!

    Also erst mal zu dem was ich vorhab ist mir einen dynamischen Notenberechner zu schreiben, d.h. ich gebe an Wie viele Fächer und wie viele Notenfelder ich haben möchte und der Berechner wird mir hier für dynamisch zusammengebaut. Ich habe ein beispiel Bild angehänt wo ihr sehen könnt wie ich mir des ungefähr vorstelle.

    Ich habe mir gedacht ich schreibe mir eine Klasse in der ich mir ein Panel zusammenbauen lasse. Aus dieser Klasse erzeuge ich mir dann 4 Objekte und füge diese auf einem Frame zusammen, also pro Notensparte ein Panel (mit Bild leichter zu verstehen). Hat jemand eine bessere Idee?

    Nun zu meinem eigentlichen Problem... Ich bin gerade dabei mir die Panel Klasse zu erstellen. Es kommt grad nur immer wieder eine Fehlermeldung und ich hab keine Ahnung wieso... Vllt könnt ihr mir ja helfen

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    package NotenBerechner;
     
    import java.awt.FlowLayout;
     
    import javax.swing.JPanel;
    import javax.swing.JTextField;
     
    public class Grundgerüst extends JPanel{
        public int i_anzNoten   = 4;
        public int i_anzFächer  = 10;
        public JTextField[][] tf_noten = new JTextField[i_anzFächer][i_anzNoten];
        
        Grundgerüst(){
            this.setLayout( new FlowLayout() );
            
            for(int noten = 0; noten < i_anzFächer; noten++){
                for(int fächer = 0; fächer < i_anzNoten; fächer++){
                    this.add(tf_noten[i_anzFächer][i_anzNoten]);
                }
            }
            
            this.setSize(300, 300);
            this.setVisible(true);
        }
    }

    Die Fehlermeldung lautet:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
    at NotenBerechner.Grundgerüst.<init>(Grundgerüst.java:18)
    at NotenBerechner.Main.main(Main.java:5)

    MfG
    Saban
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Fehlersuche-tutorials.jpg  
     

  2. #2
    Avatar von hammet
    hammet hammet ist offline himekishi
    Registriert seit
    Aug 2006
    Ort
    Bayern
    Beiträge
    334
    Code :
    1
    
     this.add(tf_noten[i_anzFächer][i_anzNoten]);

    Also wenn ich richtig gelesen habe, erstellst du ein 2D-Array mit 10 und 4 Feldern, allerdings beginnt ein Array mit dem Index 0 und in dieser Zeile willst du in den Index 10 schreiben, den es aber nicht gibt (0-9).

    Code :
    1
    
     this.add(tf_noten[i_anzFächer-1][i_anzNoten-1]);


    Würde ich sagen.

    java.lang.ArrayIndexOutOfBoundsException heißt, dass du auf einen Index zugreifen willst, der nicht existiert.
     
    Handlanger des Dr. Ex1tus

    Ich kenne Matzes dunkles Geheimnis ! oO

    o
    L_/
    OL
    This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat.

    Hallo Nuray!

  3. #3
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    Naja, ich würde vorschlagen, dass du einfach die Zählvariablen in der Schleife nutzt und nicht die Klassenvariablen. Dann funktioniert es auch.

    MFG

    Sascha

    Edit: Damit es mal deutlich wird. Nutz einfach die Variablen "noten" und "fächer" um auf den Array-Inhalt zuzugreifen, statt den Variablen, die du für das Anlegen des Arrays genutzt hast.
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  4. #4
    Avatar von Matze
    Matze Matze ist offline Weltenwanderer
    Registriert seit
    Jul 2007
    Ort
    Die Welt
    Beiträge
    1.504
    Blog-Einträge
    7
    Der Fehler sagt, dass du an einer Stelle deine Arraygrenze überschreitest und zwar hier:
    Code java:
    1
    2
    3
    4
    5
    
    for(int noten = 0; noten < i_anzFächer; noten++){
      for(int fächer = 0; fächer < i_anzNoten; fächer++){
        this.add(tf_noten[i_anzFächer][i_anzNoten]);
      }
    }

    Edit:
    Nice, 3 Posts fast gleichzeitig .
    Was Sascha meint ist:
    Code java:
    1
    
    this.add(tf_noten[noten][fächer]);
    oder?
    Geändert von Matze (29.05.08 um 08:45 Uhr)
     
    "... Jeder von uns ist Kunst... gezeichnet vom Leben" (Casper)

    "Sir?, we're sorrounded!"
    "Excellent, we can attack in any direction"

  5. #5
    Saban Saban ist offline Mitglied Gold
    Registriert seit
    Nov 2007
    Beiträge
    220
    Hallo!

    Danke für die schnellen Antworten und das sind meine lieblings Fehler... das Thema hätt ich mir echt sparen können... Danke nochmal!

    Wenn wir schon dabei sind was sagt ihr zu meinem vorgehen? Hat jemand eine bessere Idee?

    //Edit:

    Habe den Code nun wie folgt geändert
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    package NotenBerechner;
     
    import java.awt.FlowLayout;
     
    import javax.swing.JPanel;
    import javax.swing.JTextField;
     
    public class Grundgerüst extends JPanel{
        public int i_anzNoten   = 4;
        public int i_anzFächer  = 10;
        public JTextField[][] tf_noten = new JTextField[i_anzNoten][i_anzFächer];
        
        Grundgerüst(){
            this.setLayout( new FlowLayout() );
            
            for(int noten = 0; noten < i_anzNoten; noten++){
                for(int fächer = 0; fächer < i_anzFächer; fächer++){
                    this.add(tf_noten[noten][fächer]);
                }
            }
            
            this.setSize(300, 300);
            this.setVisible(true);
        }
    }

    Fehlermeldung:
    Exception in thread "main" java.lang.NullPointerException
    at java.awt.Container.addImpl(Unknown Source)
    at java.awt.Container.add(Unknown Source)
    at NotenBerechner.Grundgerüst.<init>(Grundgerüst.java:18)
    at NotenBerechner.Main.main(Main.java:5)

    OutOfBound Exception ist mir ja bekannt gewesen aber was ist eine NullPointerException?

    MfG
    Saban
    Geändert von Saban (29.05.08 um 08:53 Uhr)
     

  6. #6
    Avatar von Matze
    Matze Matze ist offline Weltenwanderer
    Registriert seit
    Jul 2007
    Ort
    Die Welt
    Beiträge
    1.504
    Blog-Einträge
    7
    NullPointerException bedeutet, dass du eine Variable benutzt, die auf keinen Speicherbereich zeigt. Oder anders: Du benutzt eine leere Variable.
    Guck doch mal, an welcher Stelle der Fehler genau auftritt und prüfe mal, ob in den dort verwendeten Variablen auch etwas steht
     
    "... Jeder von uns ist Kunst... gezeichnet vom Leben" (Casper)

    "Sir?, we're sorrounded!"
    "Excellent, we can attack in any direction"

  7. #7
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Eine NullPointerException sagt aus, dass ein Object null ist.

    Wenn du ein Array anlegst, hast du zwar den Speicherplatz reserviert, aber die Objecte sind noch nicht instanziert.
    Mach es mal so.
    Code :
    1
    2
    3
    4
    5
    6
    
    for(int noten = 0; noten < i_anzNoten; noten++){
                for(int fächer = 0; fächer < i_anzFächer; fächer++){
                    tf_noten[noten][fächer] = new JTextField();
                    this.add(tf_noten[noten][fächer]);
                }
            }

    Ein Rat von mir. Du solltest dich nochmal mit den Grundlagen von Java beschäftigen.

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  8. #8
    Saban Saban ist offline Mitglied Gold
    Registriert seit
    Nov 2007
    Beiträge
    220
    Danke für eure Hilfe!

    Ja ich muss dir recht geben die Fehler dürften mir nicht mehr passieren...
    Tut mir leid... Steh heut irgendwie aufm Schlauch...

    MfG
    Saban
     

Ähnliche Themen

  1. Fehlersuche JS
    Von Carrear im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 05.03.10, 00:08
  2. Fehlersuche
    Von brainsucker im Forum PHP
    Antworten: 5
    Letzter Beitrag: 08.09.07, 15:04
  3. Fehlersuche
    Von AIKler im Forum PHP
    Antworten: 24
    Letzter Beitrag: 10.08.07, 14:34
  4. Dev-C++ Fehlersuche
    Von cesupa im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 18.06.07, 15:32
  5. Fehlersuche
    Von starfoxfs im Forum PHP
    Antworten: 5
    Letzter Beitrag: 10.11.04, 19:43