Frage von FelixAE7, 24

Warum funktioniert dieser Code nicht (Java Sortieren von Zahlen)?

Der Code soll nach dem Klick auf Button jButton5 und anschließend JButton3 die generierten zahlen ordnen und ausgeben, dies funktioniert jedoch nicht...

http://pastebin.com/55hefqpY

Angezeigt in der Konsole bekomme ich:

run: Minimum: 10 Maximum: 100 Liste erstellt: 17 ,63 ,32 ,7 ,86 ,56 ,31 ,66 ,81 ,7 , Exception in thread "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBoundsException: 10 at First.bubbles(First.java:66) at First.jButton3ActionPerformed(First.java:314) at First.access$500(First.java:2) at First$6.actionPerformed(First.java:195) 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:6535) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6300) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4891) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 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:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThrea

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von ralphdieter, 7

Es knallt ja in Zeile 66:

  if(liste[i]>liste[i+1]){

Jetzt brauchst Du nur noch rückwärts nach der Stelle zu suchen, an der i unzulässig erhöht wird:

  for(int ias = 0; i<laenge; i++){

Tipp: Ohne das dämliche Syntax-Highlighting blinkt diese Zeile knallrot im Geiste auf :-)

Kommentar von ralphdieter ,
System.out.println( "Danke für's Sternle!" );
Antwort
von FelixAE7, 8

Wenn ich mir am Ende mal laenge ausgeben lasse bekomme ich die Werte, welche eigentlich in liste stehen sollten...

Keine passende Antwort gefunden?

Fragen Sie die Community