2 Arrays vergleichen u. das Array zurückgeben, welches kleinsten Wert beinhaltet.

elisa098

Mitglied
Hallo,
die Aufgabe ist:"Vergleiche 2 Arrays u. es soll das Array zurückgegeben werden, welches kleinsten Wert beinhaltet -> mit Methode small;
Bsp. falls a={1,4,5,7,-6} und b={1,5,7,9,-9}, so wird b zurückgegeben.
Das ist mein bisheriger Code, leider komme ich aber nicht weiter:
Danke im Voraus!
public static void main(String[] args) {


int [] a= {1,4,5,7,-6};


int [] b= {1,5,7,9,-9};


System.out.println(small(a,b));

}


public static int small (int[]a, int []b) {



for(int i=0; i<a.length; i++) {

for(int j=0; j<b.length; j++) {

if(a<b[j]) {

return a;

}else {

return b;

}

}


}}
 
Erst einmal eine generelle Regel:

Es ist immer falsch, wenn Du ein Konstrukt hast mit einer Schleife, die dann ein if enthält mit return Anweisungen im if und else Block.
Ist ja auch logisch - die Schleife wird im ersten Durchlauf immer sofort beendet.

Dann eine Bitte: Code bitte immer in Code Tags posten - dazu einfach den Knopf </> links oberhalb des Eingabebereiches nutzen. (Ansonsten werden Code-Teile als Darstellungsanweisungen ausgewertet. Bei Dir wird z.B. das [i] als Anfang der kursiven Darstellung gewertet.)

Zwei wichtige Tipps zur Lösung von solchen Aufgaben:
a) Versuche immer, die Aufgaben so zu formulieren, dass klar ist, was getan werden muss. Also wirklich deutlich mehr Informationen einarbeiten! Dazu gibt es mehrere Wege. Was immer hilft ist, die Problematik selbst durch zu spielen. Wenn Ich Dir zwei Zahlenreihen gebe: Wie kannst Du das machen? Wie gehst Du vor?
Wenn ich wissen will, welche Zahlenreihe das kleinste Element hat, dann ist es für mich naheliegend, einfach von jeder Zahlenreige das kleinste Element zu suchen und diese beiden dann zu vergleichen.

So Ideen kommen aus meiner Sicht am einfachsten, wenn man es wirklich durchspielt!

b) Dann teile die Aufgabe auf (Divide and Conquer - Teile und herrsche!). Wie die obrige Regel schon zeigt: Es ist schwer, das eine saubere Logik zu bauen, wenn man mehrere Dinge auf einmal versucht zu beachten. Und Du hast dann Code, der auch schwer zu verstehen ist - zwei verschachtelte Schleifen und da dann noch ein if ... Das sind Komplexitäten, die man versucht zu vermeiden. (Klingt evtl. am Anfang unwahrscheinlich, aber genau so ist es! Das Problem ist nicht, dass man so Code nicht versteht ... gerade mit viel Erfahrung versteht man so Code relativ einfach. Aber man will den später auch gut testen können und man will Code ohne nachzudenken lesen können. Und für Anfänger ist das, was für Profis "normal" ist, schnell existenziell!)

Der ganze Code kann also bei Dir sein:
minAusA := Minimum aus Array a
minAusB := Minimum aus Array b
Wenn minAusA < minAusB
  • dann: Gib a zurück
  • sonst: Gib b zurück

Das ist doch so beschrieben einfach. Und das kann man 1:1 in Code umsetzen und der Code ist dann auch direkt lesbar.
Dadurch, dass der Code so unterteilt wird, wird auch der Java Code einfach zu lesen sein.
 
Vielen Dank und wie kann man nochmal das Minimum aus einem Array bestimmen?
ich habe versucht den Code nochmal zu schreiben, leider funktioniert es noch nicht, kannst du zeigen, wie du ihn schreiben würdest. Das wäre super.
 
Zuletzt bearbeitet:
Code:
gefundenesMinimum := erstes Element des Arrays
für jedes Element e aus dem Array wiederhole
    falls e < gefundenesMinimum
        gefundenesMinimum := e
Am Ende befindet sich in gefundenesMinimum das Minimum 🙂
 

Zurück
Oben