Elemente von 2 Arrays vergleichen

1207

Aktives Mitglied
Hallo,
ich soll ich eine Methode static boolean arraysAreEqual( char[] firstArray, char[] secondArray ) erstellen, die genau dann true zurückgibt, wenn zwei Arrays aus Zeichen identisch sind.
Ich habe das jetzt mal so ausprobiert:
Java:
static boolean arraysAreEqual(char[]firstArray, char[]secondArray) { 
	
	for( int i = 0; i < secondArray.length; i++)
	
	     if(firstArray[i] != secondArray[i])
		    continue;
		 
		     else 
		     {return true;
		     }
			 
		return false;
		 }

und meine main-Methode sieht so aus:
Java:
 public static void main(String[] args) {
      char[] firstArray = new char[] { 'a', 'b', 'c', 'd'};
	  char[] secondArray = new char[] {'k', 'u', 'a', 'm'};
	  System.out.println(arraysAreEqual( firstArray, secondArray));
	  
	   }


Momentan vergleiche ich ja immer nur die Elemente an der gleichen Stelle, also wird mir false ausgegeben, aber wie kann ich die Methode verändern, dass jedes Element aus firstArray mit jedem Element aus secondArray verglichen wird?
 
Zuletzt bearbeitet:

rme

Top Contributor
Hallo :)

der Anfang sieht schonmal gut aus, deine Herangehensweise richtig. Du gehst bereits in der Schleife beide Arrays durch. Der !=-Operator ist wahr, wenn beide Seiten unterschiedlich sind. In dem Fall gehst du mit continue weiter, ansonsten gibst du true zurück. Ist das gewollt?

Ein anderes Problem wird entstehen, wenn die Längen unterschiedlich sind, dann existiert das Element im anderen Array ja nicht. Aber vielleicht kannst du etwas über die Gleichheit aussagen, wenn die Längen unterschiedlich sind?
 

Gucky

Top Contributor
Wenn alle Objekte mit allen verglichen werden sollen, dann müssten alle gleich sein. Das geht wenn du das erste Zeichen in array1 einließt und dann über das erste Array iterierst. Sollte das eingelesene Zeichen dem aktuellen Zeichen im Array entsprechen, dann machst du weiter. Ansonsten gibst du false zurück. Dann machst du dasselbe mkt demselben Zeichen beim zweiten Array.
 

1207

Aktives Mitglied
Ok, wenn es über die Gleichheit leichter ist, habe ich das mal geändert, aber ich weiss leider immernoch nicht wie ich das machen soll falls die gleichen Einträge an unterschiedlichen Positionen sind und wie ich das mit der Länge machen soll :(

Aber jetzt sieht es zumindest so aus:
Java:
static boolean arraysAreEqual(char[]firstArray, char[]secondArray) { 
	
	for( int i = 0; i < secondArray.length; i++)
	
	     if(firstArray[i] == secondArray[i])
		    break;
		 
		     else 
		     {return false;
		     }
			 
		return true;
		 }
 

1207

Aktives Mitglied
Ok, nein, das funktioniert so nicht, jetzt wird mir immer false ausgegeben, auch wenn an den gleichen Positionen, die gleichen Buchstaben stehen :(

Ist mein Fehler, dass sobald die 2 gleichen Elemente nicht an der 0. Position stehen geht es in die else Bedingung, wo dann direkt false ausgegeben wird und momentan sagt es dann nur true, wenn die 1. zwei Buchstaben der Arrays gleich sind.
Wenn das mein Fehlerist, weiss ich leider nicht wie ich den behebe :D
 
Zuletzt bearbeitet:

rme

Top Contributor
Das break sorgt dafür, dass die Schleife sofort unterbrochen wird - du hörst also ab der ersten Übereinstimmung mit der Untersuchung auf. Ich fand deine erste Idee mit dem Test auf Ungleichheit einfacher, du hattest eigentlich nur if- und else-Zweig dort vertauscht :)

Aber nochmal zur Aufgabenstellung: Sollen die elementweise vergleichen werden oder tatsächlich alle mit allen? Also sind nur "abc" und "abc" gleich, "abc" und "acb" aber nicht?
 

1207

Aktives Mitglied
Oh ich schaffe es doch, also jetzt sieht's so aus:
Java:
static boolean arraysAreEqual(char[]firstArray, char[]secondArray) { 
	
	for( int i = 0; i < secondArray.length; i++)
	
	     if(firstArray[i] == secondArray[i])
		    return true;
		 
		     else 
		     { continue;
		     }
			 
		return false;
		 }

aber es hängt immernoch mit den unterschiedlichen Längen und Positionen...
 

rme

Top Contributor
Hm. Deine momentane Variante gibt true zurück, sobald zwei Elemente übereinstimmen. Im Fall "abc" vs. "acb" würde sie also true zurückgeben.

Das Problem mit den Längen könntest du lösen, indem du die Längen einfach vor der Schleife vergleichst - denn vielleicht musst du die Schleife gar nicht betreten, falls sich die Längen unterscheiden? :)
 

1207

Aktives Mitglied
also soweit ich das verstanden habe soll die Methode true ausgeben sobald auch nur 1 Element der Arrays gleich ist. Also dann für abc und ecr -> true

Aber hier mal die genaue Aufgabenstellung:
Implementieren Sie eine Funktion static boolean arraysAreEqual(char[]firstArray, char[]secondArray), die genau dann true zurückgibt, wenn zwei Arrays aus Zeichen identisch sind.

Mhm oder ist damit gemeint, dass die beiden Arrays komplett identisch sein müssen?
 
Zuletzt bearbeitet:

rme

Top Contributor
Ich würde sagen: Ja. Deshalb war dein allererster Ansatz auch schon sehr nah an der Lösung :) Denn Arrays sind identisch, wenn sie die gleiche Länge haben und elementweise identisch sind.
 

1207

Aktives Mitglied
So ich habe da jetzt noch das mit der Länge eingebaut und es hat mir auch für meine Beispiele das richtige ausgegeben, stimmt es denn jetzt so?

Java:
static boolean arraysAreEqual(char[]firstArray, char[]secondArray) { 
	
	for( int i = 0; i < secondArray.length; i++)
	     if (secondArray.length != firstArray.length)
		     return false;
	
	          else {if(firstArray[i] == secondArray[i])
		            continue;
		 
		            else 
		          { return false;
		          }}
			 
		return true;
		 }
 

rme

Top Contributor
Ja, der Code ist nun korrekt - super :) Jetzt könnte man da noch ein bisschen aufräumen und für Ästhetik sorgen:

* du prüfst bei jedem Element erneut ganz schüchtern, ob die Länge auch wirklich noch stimmt ;) Man könnte dies vor der Schleife prüfen und, falls die Länge sich unterscheidet, direkt false zurückgeben, ohne erst die Schleife zu betreten.

* der Teil else "if(firstArray == secondArray) continue;" hat gar keinen Effekt. Denn die Schleife wird danach ohnehin weiter durchlaufen. Die letzte Anweisung einer Schleife ist unsichtbar immer continue, das muss man nicht manuell machen :)

* die Einrückung des Codes hat mittlerweile etwas gelitten, sodass er schwierig zu lesen ist

Aber die Funktionalität passt :)
 

1207

Aktives Mitglied
Ich bin ja schon froh, dass das Ding jetzt das macht, was ich wollte. Aber ok, ich setze mich noch dran und verschönere es ein wenig :)
und vielen, vielen Dank für die Hilfe!!!!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
A Methoden Char-Arrays auf aufeinanderfolgende Elemente vergleichen! Java Basics - Anfänger-Themen 7
E Elemente innerhalb eines Arrays vergleichen Java Basics - Anfänger-Themen 7
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
M Elemente eines Arrays verschieben Java Basics - Anfänger-Themen 9
H Arrays, Elemente löschen Java Basics - Anfänger-Themen 12
W elemente eines arrays in einen string schreiben Java Basics - Anfänger-Themen 3
P elemente aus arrays löschen? Java Basics - Anfänger-Themen 2
A Wie greif ich auf Elemente eines Arrays in einem Vektor zu? Java Basics - Anfänger-Themen 6
S Elemente eines Arrays in Console eingeben Java Basics - Anfänger-Themen 5
G zwei Arrays nach gemeinsamme Elemente suchen? Java Basics - Anfänger-Themen 19
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
E Elemente aus Liste entfernen und hinzufügen Java Basics - Anfänger-Themen 3
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
A Elemente in einem Array Java Basics - Anfänger-Themen 5
J Methoden Die Reihenfolge der Iterator-Elemente umkehren Java Basics - Anfänger-Themen 3
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
T SCC Elemente Java Basics - Anfänger-Themen 0
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
H Array Elemente Java Basics - Anfänger-Themen 17
T Elemente aus Array zu TableView JavaFX übertragen Java Basics - Anfänger-Themen 2
J Array Elemente werden nicht gefunden! Java Basics - Anfänger-Themen 6
GAZ String replace() Elemente tauschen Java Basics - Anfänger-Themen 13
J Array; Elemente kopieren Java Basics - Anfänger-Themen 17
V Array aus Klasse um vererbte Elemente erweitern Java Basics - Anfänger-Themen 3
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
A Array Elemente extrahieren ! Java Basics - Anfänger-Themen 4
J Elemente in einem 2D-Array summieren Java Basics - Anfänger-Themen 6
Kirby.exe Anzahl vorkommender Elemente im Array zählen Java Basics - Anfänger-Themen 9
M Matrix auf 4 Elemente untersuchen mit offenen Enden Java Basics - Anfänger-Themen 8
M Matrix Elemente vergleichen Java Basics - Anfänger-Themen 11
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
L String zerlegen & elemente hinzufügen Java Basics - Anfänger-Themen 5
L Anzahl der Elemente key in einem Array mit log(N) Laufzeit Java Basics - Anfänger-Themen 4
L Erste Schritte Elemente zwei Schlangen vergleichen Java Basics - Anfänger-Themen 14
E Elemente aus Liste löschen Java Basics - Anfänger-Themen 5
L Array Elemente verschieben Java Basics - Anfänger-Themen 5
S Elemente in Liste einfügen Java Basics - Anfänger-Themen 2
D jsoup.select findet keine elemente Java Basics - Anfänger-Themen 2
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
W ArrayList löscht alle Elemente bis auf eines Java Basics - Anfänger-Themen 2
M Elemente in einer ArrayList einander zuordnen. Java Basics - Anfänger-Themen 18
T Klassen Doppelte Elemente aus Container entfernen Java Basics - Anfänger-Themen 6
G Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben Java Basics - Anfänger-Themen 5
GreenTeaYT HashMap dupliziert meine Elemente? Java Basics - Anfänger-Themen 2
J Elemente in Array speichern, löschen, ... Java Basics - Anfänger-Themen 3
arjoopy Kapselung Elemente aus Objekt-Array ausgeben Java Basics - Anfänger-Themen 8
U Input/Output Elemente eines Binären Suchbaums ausgeben Java Basics - Anfänger-Themen 10
M ComboBox bestimmte Elemente disablen/ausgrauen Java Basics - Anfänger-Themen 3
K Anzahl gleicher Elemente in Array Java Basics - Anfänger-Themen 32
M LinkedList elemente löschen Java Basics - Anfänger-Themen 2
D Klassen Doppelt so viele Elemente in Arraylist ? Java Basics - Anfänger-Themen 4
V Elemente aus einem Array mit null überschreiben Java Basics - Anfänger-Themen 4
C Array Elemente Paarweise vertauschen Java Basics - Anfänger-Themen 2
kilopack15 Array auf doppelte Elemente überprüfen Java Basics - Anfänger-Themen 16
W Elemente aus einer anderen GUI steuern! Java Basics - Anfänger-Themen 13
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
R Elemente eine Liste im Ring schliessen Java Basics - Anfänger-Themen 9
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
B in einem abstrakten Set ,Elemente einer einfache verkettete List epeichern Java Basics - Anfänger-Themen 13
M Klassen Gesamt speicherbare Elemente in Vector? Java Basics - Anfänger-Themen 3
A Anzahl der Elemente in einem Stack wiedergeben Java Basics - Anfänger-Themen 3
O Rekursiver Durchlauf verschachtelter Elemente Java Basics - Anfänger-Themen 1
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
R Variablen [GELÖST]Elemente in Array um Schrittweite s verschieben Java Basics - Anfänger-Themen 2
1 Wie addiert man die Elemente einer Verketteten Liste? Java Basics - Anfänger-Themen 5
T Erste Schritte Elemente finden, deren Name erst "zusammengesetzt" wird Java Basics - Anfänger-Themen 8
A Eindeutige Elemente aus Array extrahieren Java Basics - Anfänger-Themen 9
gamebreiti Gui menu ArrayList Elemente wiedererkennen Java Basics - Anfänger-Themen 3
C Matrixmultiplikation ohne einzelne Elemente aufzurufen Java Basics - Anfänger-Themen 2
V wie kann ich in zweidimensionaller Arraylist auf die einzelnen Elemente zugreifen ? Java Basics - Anfänger-Themen 7
W wie legt man die elemente der liste k Mal fest ? Java Basics - Anfänger-Themen 7
S Anzahl unterschiedlicher Elemente zählen Java Basics - Anfänger-Themen 4
G Performance - höhere Anzahl Swing Elemente Java Basics - Anfänger-Themen 5
C ArrayList - überschreibt Elemente Java Basics - Anfänger-Themen 7
A Mehrere 100.000 Elemente verlgeichen Java Basics - Anfänger-Themen 8
A JList Elemente in ein andres JList Adden Java Basics - Anfänger-Themen 5
B Zweidimensionales Array Elemente jeder Spalte zählen Java Basics - Anfänger-Themen 9
L Rückwärtsausgabe der Array-Elemente Java Basics - Anfänger-Themen 5
1 Minimum aller Elemente in einem Array bestimmen Java Basics - Anfänger-Themen 10
M aus x Elementen y Elemente auswählen Java Basics - Anfänger-Themen 6
J Eingabe Elemente Aktivieren Java Basics - Anfänger-Themen 2
R Best Practice Elemente aus ArrayList entfernen (performant) Java Basics - Anfänger-Themen 6
G String Elemente auf Zahlen Überprüfen Java Basics - Anfänger-Themen 21
T Elemente im Array umdrehen Java Basics - Anfänger-Themen 9
L Elemente zufällig in ein Array verteilen Java Basics - Anfänger-Themen 12
T Wieviel Array-Elemente Java Basics - Anfänger-Themen 19
M Elemente im DefaultListModel separat auslesen Java Basics - Anfänger-Themen 2
T Collections Zugriff auf Elemente aus Iterator() Schleife Java Basics - Anfänger-Themen 4
P BitSet- Objekt- Anzahl der Elemente bestimmen Java Basics - Anfänger-Themen 2
S JPA / Elemente einer Liste ansprechen Java Basics - Anfänger-Themen 5
B mit einem Iterrator elemente aus einer liste löschen Java Basics - Anfänger-Themen 3
Mrtwomoon Collections Hashset elemente ohne Eckigeklammer ausgeben Java Basics - Anfänger-Themen 9
W Elemente in einem Array nach 'oben' verschieben Java Basics - Anfänger-Themen 9
M Vector überschreibt Elemente bei add()-Methode Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben