0 Daumen
570 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
 
Beste Antwort
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

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community