tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1148
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    bRainLaG bRainLaG ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    90
    Ich muss euch doch nochmal in Beschlag nehmen und ich hoffe es ist wieder nur ein Schusselfehler

    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
    26
    27
    28
    29
    30
    31
    32
    
    public class InsertionSort {
     
        private int[] array;
        private int l;
     
        public void sort(int [] array){
            this.array = array;
            l = array.length;
            InsertionSort();
        }
     
     
        private void InsertionSort(){
     
            int i;
            int j;
     
            for (i = 0; i<array.length;i++); {
     
                j = i;
                int k = array[j];
     
     
                while (j>0 &&  array[j-1] > k) {
                 array[j] = array[j-1];
                 j--;
                 }
                array[j]=k;
            }
     
        }
    }

    Wenn ich das ganze nun ausführe bekomme ich
    java.lang.ArrayIndexOutOfBoundsException

    Das bedeutet das das Array scheinbar überläuft, oder die Länge falsch gewählt ist.
    Den Fehler erhalte ich in dieser Zeile int k = array[j]; da ich aber vorher ja nur bis zur maximalen Array Length gehe wie kann ich das überlaufen?
     

  2. #2
    sebastianb sebastianb ist offline Mitglied Gold
    Registriert seit
    Dec 2009
    Beiträge
    125
    Du hast deine For-Schleife in Zeile 18 mit einem ";" abgeschlossen
     

  3. #3
    Maddin Maddin ist offline Mitglied Silber
    Registriert seit
    Jul 2010
    Beiträge
    70
    Ein Fehler wurd ja schon genannt..

    Die Array-Index-OutOfBounds-Exception kommt übrigens wahrscheinlich von Zeile 24, mit dem array[j-1] Bei j=0 willst du auf das -1-te Element des Arrays zugreifen, was nicht geht.

    Ansonsten, was auffällt:
    In den Zeilen 15/16 definierst du zwei Integer: i und j.
    Dann lässt du die for-Schleife für i durchlaufen, um anschließend j den Wert von i zuzuweisen und dann mit j weiterzumachen.
    Warum?
    "i" würde doch reichen?

    Gruß,
    Martin
    Geändert von Maddin (03.11.10 um 19:47 Uhr)
     

  4. #4
    Tsunamii Tsunamii ist offline Mitglied Silber
    Registriert seit
    Jul 2009
    Beiträge
    75
    eigentlich sind es nur 2 kleinigkeiten:
    - das ; in Zeile 18 muss weg wie sebastianb schon erwähnt hat
    - wenn du mit i=1 in der for-schleife anfängst ist die Exception weg und der Sort funktioniert immernoch
     

Ähnliche Themen

  1. InsertionSort
    Von cuchulainn im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 2
    Letzter Beitrag: 30.12.04, 21:55