0 Daumen
1,4k Aufrufe

Hallo liebe Community,

ich weiß leider nicht wie ich die Aufgabe lösen soll. könnt ihr mir bitte kurz schrittweise sagen wie? Danke im voraus :)

LG Mambo

Aufgabe:

Gegeben seien zwei Felder a und b vom Typ int.

a) Warum kann man die beiden Felder a und b nicht mittels a == vergleichen ?

b) wie könnte ein Programmstück aussehen, dass beide Felder miteinander vergleicht? Dabei seien Felder genau dann gleich,  wenn sie die gleiche Länge haben und all ihr Komponenten paarweise übereinstimmen?

Avatar von

1 Antwort

+2 Daumen
a) Warum kann man die beiden Felder a und b nicht mittels a == vergleichen ?

Der == Operator bei Objekten vergleicht die Referenzen auf die Objekte und nicht die Objektinhalte.

 public static void main(String... args) {
int[] a = new int[]{1,2,3,4,5,6,7};
int[] b = new int[]{1,2,3,4,5,6,7};
System.out.println(a==b); // liefert false!
}
wie könnte ein Programmstück aussehen, dass beide Felder miteinander vergleicht?

Das Programmstück könnte wie folgt aussehen:

 public static boolean equals(final int[] a, final int[] b){
// Vergleich der Länge -> false zurückgeben, falls
    if(a.length != b.length){
        return false;
    }
    // Vergleiche alle Elemente miteinander ...
    for(int i = 0; i < a.length /*hier könnte auch b.length stehen*/; i++){
        // Gib false zurück, sobald der erste Unterschied der Feld-Elemente aufritt.
        if(a[i] != b[i]){
            return false;
        }
    }
    // Die Felder sind gleich.
    return true;
}

Ein Test zeigt:

 public static void main(String... args) {
int[] a = new int[]{1,2,3,4,5,6,7};
int[] b = new int[]{1,2,3,4,5,6,7};
System.out.println(equals(a,b)); // liefert true!
}

Avatar von

danke vielmals für die Hilfe :)

Gerne :) Stelle ruhig weitere Fragen!

a) verstehe ich vollkommen doch bei b) verstehe ich nicht wirklich alles

public static boolean equals(final int[] a, final int[] b){
      // Vergleich der Länge -> false zurückgeben, falls
    if(a.length != b.length){
        return false;

Die Bedingung (if)  verstehe ich nicht. nur eine kurze Erklärung bitte. Ich müsste mich mehr mit der Bedeutung der Zeichen befassen.

a.length != b.length

bedeutet so viel wie 

"Die Länge des Feldes a entspricht nicht der Länge des Feldes b". Wenn das der Fall ist, dann können wir direkt den Wert false zurückgeben!

gut, hab alles verstanden

Ähnliche Fragen

Made by a lovely Community