"Exception in thread "AWT-EventQueue-0"" Fehler

Jaxor84

Mitglied
Hallo ihr Lieben,
Ich habe folgende Methode:
Java:
public void resetAll() {
    writeStatus(sStatus);
    writeGrund(sGrund);
    String nochnName = new String();
    String nochneKlasse = new String();
    int sNameLength = sName.length();
    StringBuffer buffName = new StringBuffer();
    StringBuffer buffKlasse = new StringBuffer();
    for (int i = 0; i <= sNameLength; i++) {
      boolean bKlasse = false;
      if (sName.charAt(i) == ',') {bKlasse = true;} // end of if
      while (bKlasse == false) {
        buffName.append(sName.charAt(i));
      } // end of while
      while (bKlasse == true) {
        buffKlasse.append(sName.charAt(i));
      } // end of while
    }
    nochnName = buffName.toString();
    nochneKlasse = buffKlasse.toString().trim();
    writeName(nochnName,nochneKlasse);
  }
Was diese eigentlich tun sollte, ist den String sName bis zum Komma in den String nochnName zu übertragen und alles nach dem Komma in den String nochneKlasse. Wenn ich das jetzt aber ausführe, bekomme ich diese Latte an Fehlern:
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3332)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:649)
at java.lang.StringBuffer.append(StringBuffer.java:381)
at laptop0.resetAll(laptop0.java:316)
at laptop0.bAbbrechen_ActionPerformed(laptop0.java:329)
at laptop0$7.actionPerformed(laptop0.java:205)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
Ich habe leider absolut keine Ahnung, was das bedeutet und was hier schiefgelaufen ist und bin etwas aufgeschmissen.
Daher jetzt meine Frage an euch: Wo liegt der Fehler und wie kann ich den lösen?
Ich danke vielmals für eure Hilfe!
LG
Max
 
Dir ist der Speicher ausgegangen. Du hast da zwei While Schleifen, von denen die erste eine endlosschleife ist.
Java:
      while (bKlasse == false) {
        buffName.append(sName.charAt(i));
      }
Da bKlasse nie true wird, wird die Zeile immer wieder und wieder ausgeführt - bis der Speicher voll ist.
 
Und du solltest Dir die Logik noch einmal genau überlegen. Die äußere Schleife geht ja alle Zeichen durch. Und dann wird das Zeichen, bei dem du gerade bist, kopiert. Da machen weitere Schleifen ja keinen Sinn. Alles, was du in der äußeren Schleife brauchst ist eine Unterscheidung mit if, damit Du entscheiden kannst ob und wohin das aktuelle Zeichen geschrieben werden soll.
 

Zurück
Oben