2016-11-07 1 views
0

Ich habe versucht, dieses Problem seit etwa 2 Tagen jetzt zu vervollständigen, da es das Wochenende ist und ich kann keine Tutoren an meiner Schule kontaktieren. Ich habe eine Schleife erstellt, die den höchsten Wert in einem nicht leeren Array findet und dann den niedrigsten Index der höchsten Zahl in diesem Array mit dem letzten Wert im Array vertauscht.Array swapLargest nicht bestanden alle Tests, BASIC JAVA

Zum Beispiel

swapLargest ([1, 7, 5, 7, 4, 2]) → [1, 2, 5, 7, 4, 7]

aber läuft es kommt als

[1, 7, 5, 7, 2, 4]

hier ist mein Code

int[] swapLargest(int[] a) { 

int max = Integer.MIN_VALUE; 

for(int i = 1; i <a.length; i++){ // starting from 0 
    if(a[i] > max){ 
    max = a[i]; 
    max = i; 

    } 

} 
int temp = a[max]; 
a[max]=a[a.length-1]; 
a[a.length-1] = temp; 
return a; 



} 

und schließlich eine Verbindung zum Problem: http://codingbat.com/prob/p227094 Wenn Sie Ihre Ergebnisse mit mir testen möchten. Bisher würde dies 4/11 Tests bestehen.

Ich bin wirklich neu in der Programmierung, alle Tipps wären willkommen.

Danke!

+3

'max = a [i]; max = i' Sie ordnen die gleiche Variable zweimal zu - das Ergebnis der ersten Zuweisung wird von der zweiten überschrieben. Vielleicht müssen Sie zwei verschiedenen Variablen zuweisen. – khelwood

Antwort

0

Sie können Index des Max-Wert speichern in separate Variable:

int[] swapLargest(int[] a) { 

int max = Integer.MIN_VALUE; 
int maxI = 0 ; 

for(int i = 0; i < a.length; i++){ 
    if(a[i] > max){ 
    max = a[i]; 
    maxI = i; 

    } 

} 
int temp = a[maxI]; 
a[maxI]=a[a.length-1]; 
a[a.length-1] = temp; 
return a; 
} 
+0

Es wird einen syntaktischen Fehler beim Überprüfen der Bedingung der for-Schleife geben, und ein logischer Fehler besteht darin, dass Sie mit dem iterating durch das Array beginnen, um das maximale Element aus dem Index '1' zu finden. Wenn das maximale Element an der ersten Position ist, würde dieser Code dort fehlschlagen . –

+0

Danke für die Korrektur, es wurde von ques kopiert –

Verwandte Themen