ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
330
330
EMPFEHLEN
-
Hallo liebe Community ich brauche leider mal wieder ein zweites gutes Auge. Mein Code schmeißt mir eine ArrayIndexOutOfBoundsException und ich sehe irgendwie den Fehler nicht:
Code :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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package Sortalgo; import java.util.Arrays; import java.util.Random; /** * * @author Ich */ public class SlowSort { private int[] num; private int numb; private int pivot; public void sort(int[] values) { if (values == null || values.length == 0) { return; } this.num = values; numb = values.length; slowsort(values, 0, numb-1); } private void slowsort(int[] values, int i, int j) { if (i >= j) { pivot = (i + j) / 2; slowsort(values, i, pivot); slowsort(values, pivot + 1, j); } if (values[j] < values[pivot]) { swap(values[j], values[pivot]); } slowsort(values, i, j - 1); } private void swap(int i, int j) { int temp = num[i]; num[i] = num[j]; num[j] = temp; } public void random(int[] array) { for (int k = 0; k < array.length; k++) { Random r = new Random(); int rand = r.nextInt(); array[k] = rand; } } public static void main(String[] args) { int [] values; values = new int [10]; SlowSort slow = new SlowSort(); slow.random(values); slow.sort(values); System.out.println(Arrays.toString(values)); } }
Code :1 2 3 4 5
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -358296385 at Sortalgo.SlowSort.swap(SlowSort.java:45) at Sortalgo.SlowSort.slowsort(SlowSort.java:37) at Sortalgo.SlowSort.sort(SlowSort.java:27) at Sortalgo.SlowSort.main(SlowSort.java:67)
Ich hoffe mir kann vieleicht jemand nen Tipp geben
-
31.10.11 12:46 #2SE Tutorials.de Gastzugang
Wow ... da stimmt aber einiges überhaupt nicht.
1) Wir haben hier auch Java-Tags *siehe Signatur* ... diese erhöhen die Lesbarkeit ... bitte beim nächsten mal dran denken.
2) Gehen wir den Stack doch mal durch
Der Fehler tritt in SlowSort.swap(int, int) auf. *Package-Name schreibt man übrigens lowerCamelCase*
Wenn wir uns im Stack weiter bewegen kommen wir zu SlowSort.slowSort(int[], int, int).
Dort callst du SlowSort.swap(int, int) mit dem INHALT ! des Array-Elementes ... und verwendest das als Array-Index ... das das kracht ist sieht man aber =D.
Ich kenne den Algorythmus jetzt selbst nicht .. aber der Fehler liegt eindeutig in Zeile 37 wo du den Inhalt des Arrays als Index übergibst und damit die Methode swap(int, int) falsch callst.
Auch finde ich die globalen Variablen eher sub-optimal. Es ist jetzt kein Fehler ... aber wenn man schon Arrays welche ja nur als Referenz und nicht als Copy übergeben werden verwendet sollte man damit auch konsequent die gesamte Klasse durch arbeiten und keine Mischformen als Call-by-Reference und Global-Variable machen ... sieht halt auch nicht sonderlich schön aus.
-
Vielen Dank, ich werde da nochmal schauen und die Tipps begutachten
Ähnliche Themen
-
Problemlösungvorschläge zum beliebten Java Fehler : java.lang.OutOfMemoryError:
Von IzYaBoi im Forum JavaAntworten: 12Letzter Beitrag: 24.09.08, 13:16 -
Neue Version des Java Plugins in Java SE 6 Update N Early Access
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 01.05.08, 13:38 -
java.sun.com Artikel zeigt die neuen Features für Java on the Desktop von Java 6
Von Thomas Darimont im Forum Java Technology NewsAntworten: 1Letzter Beitrag: 17.02.07, 18:39 -
COM4J eine alternative Java - COM Bridge mit Java 5 Mitteln
Von Thomas Darimont im Forum Java Technology NewsAntworten: 0Letzter Beitrag: 10.10.06, 17:49 -
Java is Hot! Java News - Java Polis 2005
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 03.12.05, 16:23





Zitieren
Login





