Array: Zeilen vergleichen

Moncici

Neues Mitglied
Hallo zusammen,

ich hänge über einer alten Klausuraufgabe zu Übungszwecken.
Teil 1&2 habe ich hinbekommen, bei Teil 3 hänge ich jedoch und finde gar keinen Ansatz.
Eigentlich muss ich ja nur die Zeilen der Länge nach vergleichen mit for(int i=...), doch für das rückwärts vergleichen brauche ich dann doch die zweite for(int j=...) Schleife.

Könnt ihr mir auf die Sprünge helfen?

Lieben Dank!
Moncici

Teil1: Schreiben Sie die Java-Methode
private boolean zweiFelderGleich(char[] eins, char[] zwei),
die zwei char-Arrays gleicher Länge miteinander vergleicht und true zurückliefert, wenn die Inhalte der Arrays identisch sind. Haben die Arrays unterschiedliche Längen, soll false zurückgegeben werden.



Java:
  private static boolean zweiFelderGleich(char[] a, char[] b) {
		boolean eq = false;
		if (a.length == b.length) {
			eq = true;
		}
		return eq;
	}

Teil 2:
In dieser Aufgabe entwickeln Sie schrittweise eine Java-Methode, die prüft ob es in einem
Array von char-Arrays mindestens 2 Arrays gibt, die dieselben Element enthalten nur in
umgekehrter Reihenfolge.
a. Schreiben Sie auf der nächsten Seite die Hilfsmethode "private static boolean zweiFelderUmkehrung(char[] eins, char[] zwei)"

Java:
  public static boolean zweiFelderumkehrung(char[] a, char[] b) {
		boolean erg = false;
		if (a.length == b.length) {
			for (int i = 0; i < a.length; i++) {
				if (a[i] == b[b.length - 1 - i])
					erg = true;
				else
					erg = false;
				break;
			}
		}
		return erg;}


Teil 3 Schreiben Sie nun eine Java-Methode, die prüft, ob es in einem Array von charArrays mindestens 2 Arrays gibt, die dieselben Element enthalten nur in umgekehrter
Reihenfolge. Die Methode liefert true, wenn es zwei solche Felder gibt.
0 -> a b c d e
1 -> h t d j o p s
2 -> e d c b a
3 -> v m a q
4 -> h j q s y x

Java:
public static boolean vergleichen(char[][] test)
{
  
}


Main:

Java:
public static void main(String[] args) {
		char[] a = new char[] { 17, 23, 1, 5 };
		char[] b = new char[] { 5, 1, 23, 1 };

		char[][] test = { { 's', 'd', 'f', 'g', 'h', 'j', 'k' },
				{ 'i', 'u', 'z', 't', 'r', 'e', 'w' },
				{ 'a', 's', 'd', 'f', 'g', 'h', 'j' },
				{ 's', 'e', 'r', 'f', 'g', 't' },
				{ 'w', 'e', 'r', 't', 'z', 'u', 'i' },
				{ 's', 'e', 'd', 'f', 'r', 'g', 't' }, };

//		System.out.println(vergleichen(test));

		 System.out.println(zweiFelderumkehrung(a, b));
		 System.out.println(zweiFelderGleich(a, b));
	}

}
 
Sorry aber das ist alles falsch. Schon Teil 1 macht nichts außer die Länge zu vergleichen. Du sollst aber die Inhalte vergleichen.
Im zweiten Teil wird deine Methode dann komplett sinnfrei.

Ich denke du solltest dringend noch einmal von vorne anfangen und einfach mal im Kopf Schritt für Schritt durchgehen was dein code überhaupt macht.

Gruß

Claus
 
Wie Thallius schon geschrieben hat, hier liegt der Hase im Pfeffer :

true zurückliefert, wenn die Inhalte der Arrays identisch sind.


in Pseudo Code also
Java:
wenn (Inhalt von Position x in Array1 Identisch mit Inhalt von Position x in Array2){

 ...dann....
}

Dazu musst du natürlich auch über jeden Indizes deiner Arrays iterieren.
 
Zuletzt bearbeitet:
Danke schön!
Hab mich nochmal dran gesetzt:


Zu 1:
Java:
private static boolean zweiFelderGleich(char[] a, char[] b) {
		boolean equal = false;
		if (a.length == b.length) {

			equal = true;
			for (int i = 0; i < a.length; i++) {
				for (int j = b.length - 1; j <= b.length-1; j++) {
					equal = (a[i] == b[i]);
					if (!equal)
						break;
				}
			}
		}
		return equal;	}

Zu 2:
Java:
public static boolean zweiFelderumkehrung(char[] a, char[] b) {
		int längeVonEins = a.length; 
        int längeVonZwei = b.length; 
        boolean flag = true; 
          
        if (längeVonEins == längeVonZwei) {  
              
            for (int i = 0; i < a.length; i++) { 
                if (a[i] != b[b.length-1-i]) { 
                    flag = false; 
                } 
            } 
        }else{ 
            return false; 
        } 
          
        if (flag == true) { 
            return true; 
        }else{ 
            return false; 
        }    
    
	}

Jedoch bekomme ich nicht die Kurve zur Teil 3... Wie kann ich in einem mehrdimensionalem Array die Zeilen einzeln ansprechen?
Ist wahrscheinlich recht simple, aber irgendwie verwirre ich mich selbst.

Lieben Dank!
 
Mehrdeminsionales Array

Java:
[i]Zeilen[j]Spalten

oder anders noch ein Array mit folgender Größe

Java:
int[][] arr = new int[2][3];

ist equivalent zu

Code:
[0][1][2]
[1][1][2]

    Spalten
Z
e
i
l
e
n

Also 2 Zeilen mit jeweils 3 Spalten
 
Zuletzt bearbeitet:

Zurück
Oben