2016-04-17 13 views
0

Dies ist für meine Klasse Data Structures: Ich muss eine Merge-Sortierung durchführen. Ich kann nur die Zusammenführungsmethode ändern.e.message() und mergeMethod in einem mergeSort Java

// merge sort 
public void mergeSort(Card[] cardArray) 
{ 
    mergeSortRec(cardArray, 0, cardArray.length - 1); 
} 

// recursive helper recursive method for mergeSort 
public void mergeSortRec(Card[] cardArray, int startIndex, int endIndex) 
{ 
    if (startIndex < endIndex) 
    { 
     int midIndex = (startIndex + endIndex)/2; 
     mergeSortRec(cardArray, startIndex, midIndex); 
     mergeSortRec(cardArray, midIndex + 1, endIndex); 
     merge(cardArray, startIndex, endIndex); 
    } 
} 

Dies ist die Methode arbeite ich an und ich halte eine e.message bekommen() 28. Ich gehe davon aus, dass ein Null-Zeiger-Problem bedeutet. Ich sehe es einfach nicht. Die comparies() vergleicht die beiden Karten und diese Methode funktioniert. Ich kann auch Parameter nicht ändern.

+0

Was ist 'e.message()' es ist nicht in Ihrem Code vorhanden. – 11thdimension

+0

Sein Teil meines Testcodes catch (Exception e) { System.out.println ("Fehler aufgetreten:" + e.getMessage()); } – Jennifer

Antwort

0

Die Parameter zum Zusammenführen sind ungewöhnlich. Sie müssen erneut middle + 1 berechnen und damit die Vergleichsschleife starten (der erste Vergleich ist [startIndex], [middle + 1]). Sie müssen prüfen, ob das Ende eines halben Arrays erreicht wurde. In diesem Fall kopieren Sie den Rest des anderen halben Arrays. Die letzte Zeile sollte cardArray [i] = temp [i] sein.