MergeSort

Status
Nicht offen für weitere Antworten.

Dagobert

Bekanntes Mitglied
Kann mir jemand sagen was an diesem Code falsch ist? Ich kann einfach mein Fehler nicht finden oder den fehler die Methode zusammen ist nicht von mir, sondern von userer Infolehrerin...

Danke für Antworten

Code:
import java.io.*;

public class MergeSort {

	public MergeSort() throws IOException {
		char[] wort = eingabe();
		teile(wort, 0, wort.length);
		ausgabe(wort);
	}

	public static char[] eingabe() throws IOException {
		BufferedReader io = new BufferedReader(new InputStreamReader(System.in));
		System.out.println("Bitte geben Sie ein Wort ein was sortiert werden soll:");
		String eingabe = io.readLine();
		int n = eingabe.length();
		char[] wort = new char[n];
		for (int i = 0; i < n; i++) {
			wort[i] = eingabe.charAt(i);
		}
		return wort;
	}

	static void teile(char[] wort, int unten, int oben) {
		if (unten < oben) {
			int mitte = (oben + unten) / 2;
			teile(wort, unten, mitte);
			teile(wort, mitte + 1, oben);
			 zusammen(wort, unten, mitte, oben);
		}
	}

	public static void zusammen(char[] B, int unten, int mitte, int oben) {
		char[] temp = new char[oben - unten + 1];
		for (int i = 0, j = unten, k = mitte; i < temp.length; i++) {
			if ((k > oben) || (j < mitte) && (B[j] < B[k])) {
				temp[i] = B[j];
				j++;
			} else {
				temp[i] = B[k];
				k++;
			}
		}
		for (int i = 0; i < temp.length; i++) {
			B[unten + i] = temp[i];
		}
	}

	public static void ausgabe(char[] wort) {
		for (int i = 0; i < wort.length; i++) {
			System.out.print(wort[i]);
		}
	}

	public static void main(String[] args) throws IOException {
		MergeSort MS = new MergeSort();
	}
}
 
S

SlaterB

Gast
kannst du nebenbei noch sagen, was dich vermuten läßt, dass etwas falsch ist?

bekommst du falsche Ergebnisse oder ist das eine Aufgabe oder oder
 

Dagobert

Bekanntes Mitglied
Ich bekomme ein IndexoutofBounds in Zeile 4...
aber ich hab keine Ahnung warum? Vllt. hab ich auch einfach iwo vergessen ne -1 hinter der Verwendung vom Arry zu hängen...
 
S

SlaterB

Gast
Zeile 4 ist eine Leerzeile..

und gleich die verwendete Eingabe char für char angeben, bisschen mitdenken bitte..
 

Dagobert

Bekanntes Mitglied
Jaja Eclips ist manchemal lustig... XD

aber wo ist mein Fehler? Meine Infolehrerin hatte kein bock drüber zu gucken oder weis net was sie uns erzählt, was ich er glaube^^
 

Dagobert

Bekanntes Mitglied
wenn ich wüste wo meine Fehler grade ist würde ich nicht hier fragen XD

Hier die komplette Eclips Fehlermeldung:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Sortierverfahren.MergeSort.zusammen(MergeSort.java:41)
at Sortierverfahren.MergeSort.teile(MergeSort.java:30)
at Sortierverfahren.MergeSort.teile(MergeSort.java:29)
at Sortierverfahren.MergeSort.<init>(MergeSort.java:9)
at Sortierverfahren.MergeSort.main(MergeSort.java:57)
 
S

SlaterB

Gast
Zeile 41 (ok, auch ne Leerzeile, aber schon näher dran), und wie ich befürchtet hatte: nach der verwendeten Eingabe muss ich dich immer noch extra fragen,
weder über die eigene Fragestellung nachlesen noch Nachfragen beachten, schöne Einstellung
 

Marco13

Top Contributor
Das heißt nur, dass der Index 4 außerhalb der Bounds ist. Auftreten tut der Fehler in Zeile 41. Und das ist eine schließende Klammer :lol:
 

Dagobert

Bekanntes Mitglied
Ich hab doch deine Frage beantwortet.
Ich krieg nen Fehler zurück... siehe oben. Es ist eine Aufgabe die wir in der Schule machen sollte, aber wie gesagt ich hab da nen kleinen Fehler.
Was willst du noch wisse? :?:
 
S

SlaterB

Gast
zum dritten Mal du Schlafmütze (jetzt muss man das sagen dürfen):
bei welcher Eingabe tritt der Fehler auf?
 

Dagobert

Bekanntes Mitglied
eigentlich bei allem was ich ausprobiert habe...

Buchstaben

Zahlen

Buchstaben&Zahlen

Mal kürzer mal länger
 

FelixB

Bekanntes Mitglied
Dagobert, du Geizhals...

du sollst uns eine GANZ KONKRETE Eingabe nennen, damit wir das nachvollziehen können.

Idealerweise ungefähr so:

Eingabe: 987654321
erwartete Ausgabe: 123456789
folgende Exception trat aus: ...



mal so nebenbei: ist das jetzt DEIN Code oder der Code deiner Lehrerin?
 
S

SlaterB

Gast
nun, streng genommen ist 'jede Eingabe' schon mal gut,
dann kann man selber eine wählen und meckern wenn es damit nicht geht, ;)
geht aber mit allen nicht
 

Dagobert

Bekanntes Mitglied
Eingabe: Test
Fehler:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Sortierverfahren.MergeSort.zusammen(MergeSort.java:41)
at Sortierverfahren.MergeSort.teile(MergeSort.java:30)
at Sortierverfahren.MergeSort.teile(MergeSort.java:29)
at Sortierverfahren.MergeSort.<init>(MergeSort.java:9)
at Sortierverfahren.MergeSort.main(MergeSort.java:57)

Eingabe: 54321
Fehler:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Sortierverfahren.MergeSort.zusammen(MergeSort.java:37)
at Sortierverfahren.MergeSort.teile(MergeSort.java:30)
at Sortierverfahren.MergeSort.teile(MergeSort.java:29)
at Sortierverfahren.MergeSort.<init>(MergeSort.java:9)
at Sortierverfahren.MergeSort.main(MergeSort.java:57)
Eingabe: Test123
Fehler:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at Sortierverfahren.MergeSort.zusammen(MergeSort.java:41)
at Sortierverfahren.MergeSort.teile(MergeSort.java:30)
at Sortierverfahren.MergeSort.teile(MergeSort.java:29)
at Sortierverfahren.MergeSort.teile(MergeSort.java:29)
at Sortierverfahren.MergeSort.<init>(MergeSort.java:9)
at Sortierverfahren.MergeSort.main(MergeSort.java:57)

Die Methode zusammen ist von unsere Lehrerin vorgegeben (Brauchen wir im Zentral Abi net progen können sonder mehr Laufzeit und so^^) der Rest also das drumherum ist von mir eingabe ausgabe usw.
 

Dagobert

Bekanntes Mitglied
juhu es geht...
vielen danke...

aber unsere Lehrerin hat das ne wirklich nur abgeskriptet? naja aber bei der erwarte ich nix anderes... die ist ohne ihren Zettel hilflos.... oO ???:L

D A N K E
 
S

SlaterB

Gast
na es heißt Mergesort, das sind nur 5 Schritte, die man richtig anordnen kann, nix neu zu erfinden,
dafür hat sie da schon relativ viel kreativ verdreht,

fass dir lieber an die eigene Nase..
 

Dagobert

Bekanntes Mitglied
Ich fass mir oftgenug an die eingene Nase... nur von uns wird erwartet das wir alles können.... und Lehrer?

Wir hatten bis letztes Jahr auch ein Lehrer der sowas alles wuste... und jetzt muss man sich immer reinzeihen... das weiß ich auch net glaubt mir einfach...

Naja aber lassen wir das an dieser Stelle...
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben