Erste Schritte Elemente zwei Schlangen vergleichen

<Lena>

Mitglied
Hallo,
ich möchte ein Programm schreiben, dass die Interessen von Frauen und Männer vergleicht. Bei gleichem Interesse soll sich ein Paar bilden.
Ich habe eine Schlange Herr und eine Schlange Dame gebildet.
Jetzt soll deren Interessen verglichen werden und wenn die Interessen gleich sind, sollen diese ein Paar bilden. Zum Beispiel Herr0 und Dame2 das gleiche Interesse. In der Schlange Paar soll dann als Paar0 Dame0 und Dame2 stehen und herr0 und Dame2 sollen aus den Schlangen Dame und herr gelöscht werden, da sie nicht mehr zu verfügung stehen.
Ich weiß nicht, wie ich jedes einzelne Element vergleichen soll. So wie ich das gemacht habe funktioniert es irgendwie nicht.

Java:
public class Vermittlung {   
    public static void main(String[] args) {
  
    Queue<String> herr = new LinkedList<String>();
    Queue<String> dame = new LinkedList<String>();
    Queue<String> paar = new LinkedList<String>();
   
    herr.add("Fußball");
    herr.add("Fußball");
    herr.add("Handball");
    herr.add("Basketball");
    herr.add("Fußball");
   
    dame.add("Basketball");
    dame.add("Basketball");
    dame.add("Fußball");
    dame.add("Handball");  
    dame.add("Basketball");
 

    for(int x = 0; x<5; x++){
       
        for(int y = 0; y<5; y++){
           
            if(dame.element(x) == herr.element(y)){
                paar.add(dame.element(x) == herr.element(y))
                dame.remove(x);
                herr.remove(y);
                System.out.println("Paar"); 
            }
            System.out.println("kein paar");  
        }
      }
    }   
}

Danke schonmal in Vorraus.
 

httpdigest

Top Contributor
Das funktioniert aus vielen Gründen nicht:
1. Du verwendest eine Methode `element()`, die auf dem Typ `java.util.Queue` nicht definiert ist
2. Wenn du stattdessen `get(int)` nehmen würdest, würdest du eine IndexOutOfBounds exception bekommen, weil du immer über alle 0..4 Indizes der beiden Listen iterierst, während aber Elemente aus den Listen entfernt werden
3. Wenn du das gelöst hast (indem du z.B. nur bis dame.size() bzw. herr.size() iterierst) wird dein nächstes Problem sein, dass du Paare mit derselben Dame mehrfach hinzufügst, dadurch, dass du für einen Herren nicht abbrichst, wenn du mal eine passende Dame gefunden hast
4. Wenn du das gefixt hättest, wäre das nächste Problem, dass deine Paare nur aus `true` bestehen würden, weil du in `paar` das Ergebnis des Vergleichs `dame.get(x) == herr.get(y)` hinzufügen würdest. Du brauchst also irgendeine andere Repräsentation eines "Paares". Z.B. eine Klasse, die aus zwei Instanzvariablen besteht. Oder aber ein zweielementiges Array. Oder eine zweielementige Liste. Genauso hast du keine Repräsentation einer tatsächlichen "Person". Du hast nur die Interessen. Wenn du aber mal ein Paar gebildet hast, weißt du ja nicht mehr, welche Personen das dann nun waren. Du hättest lediglich zwei gleiche Interessen pro Paar.
(5. in diesem Fall mit statischen Strings kein Problem, aber generell: Strings vergleicht man mit `string1.equals(string2)` und nicht mit `==`)
 

<Lena>

Mitglied
3. Wenn du das gelöst hast (indem du z.B. nur bis dame.size() bzw. herr.size() iterierst) wird dein nächstes Problem sein, dass du Paare mit derselben Dame mehrfach hinzufügst, dadurch, dass du für einen Herren nicht abbrichst, wenn du mal eine passende Dame gefunden hast

Wie kriege ich das Problem behoben?
 

httpdigest

Top Contributor
Die Art, wie du deine Fragen formulierst, lässt mich ein bisschen darauf schließen, dass du hier gerade etwas versuchst, was noch weit über deinen Java- bzw. Programmierkenntnissen liegt. Lese dir erst einmal mehr Grundlagen an oder versuche einfachere Aufgaben.
Es bringt ja nix, wenn man dir jetzt hier sagt: "Mach erst jenes an Stelle A und dies an Stelle B und dann noch das an Stelle C."
Wo kommst du denn nicht weiter, bzw. was verstehst du nicht, was dich nicht in die Lage versetzt, das Problem zu verstehen und selbst zu lösen?
Kannst du deine Fragen spezifischer formulieren als nur: "Wie löse ich das Problem?"
 

<Lena>

Mitglied
Ok, ich habe Damen und Herren, dessen Interessen ich vergleichen muss. Bei den Paaren soll ich die "Nr" der Dame und Herren eingebn. macht Sinn die Damen und Herren als List zu definieren oder als Objekte?
Und wenn Objekt: ob dass funktiert Objekt Dame und Objekt Herr zu vergleichen?
 

<Lena>

Mitglied
Ok, hier den Text, den wir gekriegt haben
Es gibt eine Menge von Damen D und eine Menge von Herren H sowie eine Liste die alle Kombination (h,d) von Herren h und Damen d umfasst, welche einander wechselseitig sympatisch finden und als Partner in Frage kommen.
Wir haben 5 Herren A,B,C,D,E, und 5 Damen P,Q,R,S,T.
Damen haben mehre Favoriten (Herren mit denen sich die Damen anfreunden wollen).
Dame P bevorzugt Herr A und B
Dame Q bevorzugt Herr B und C
Dame R bevorzugt Herr A,C, und D
Dame S bevorzugt Herr B,D und E
Dame T bevorzugt Herr C und E

Herr A: bevorzugt Eigenschaft 1
Herr B: bevorzugt Eigenschaft 2
Herr C: bevorzugt Eigenschaft 3
Herr D: bevorzugt Eigenschaft 4
Herr E: bevorzugt Eigenschaft 5

Dame P: hat Vorliebe Eigenschaft 1 und 2
Dame Q: hat Vorliebe Eigenschaft 1,3 und 4
Dame R: hat Vorliebe Eigenschaft 2 und 3
Dame S: hat Vorliebe Eigenschaft 2 und 4,5
Dame T: hat Vorliebe Eigenschaft 3 und 5

Die Agentur könnten in diesen Beispiel nacheinander die Paare (A,P), (B,Q), (C,R), (D,S) und (E,T) bilden, so jede Person einen Partner erhalten.
Erstelle diese 5 paare
 
Zuletzt bearbeitet:

<Lena>

Mitglied
Meine andere Überlegung war eine Klasse Person zu erstellen. In der es das Objekt person gibt:
Java:
Person[] person = new Person[5];
person[0] = new Person();
person[0].setGeschlecht("Mann");
person[0].setInteresse("Handball");

und wenn das Geschlecht der Person Mann ist, dann soll die person der Schlange herr hinzugefügt werden.
Da man bei der Schlange ein Element löschen kann, wenn man den Mann dann der Liste paar hinzufügt. Oder macht ein Stapel mehr Sinn?
Wäre das eine bessere möglichkeit zu programmieren oder hab ich einen Denkfehler drin?
 

mihe7

Top Contributor
Langsam. Wie man Damen und Herren abbildet, spielt erstmal eine untergeordnete Rolle. Fangen wir ganz einfach mit Strings an.

Es gibt eine Menge von Damen D und eine Menge von Herren H sowie eine Liste die alle Kombination (h,d) von Herren h und Damen d umfasst
=> Zwei Mengen und eine Liste. Wie man aus der weiteren Beschreibung herauslesen kann, ist die Liste eine Abbildung, d. h. zu jeder Dame gibt es eine Liste von Herren.

Wichtig ist, dass die Damen und Herren in der beschriebenen Reihenfolge abgearbeitet werden (sonst kommt ggf. etwas anderes raus).

D. h. wir könnten z. B. folgenden Algorithmus formulieren:
Code:
D := Menge (geordnet) von Damen
H := verfügbare Menge von Herren
Für jede Dame d
    l := Liste von Herren, die Dame d sympathisch findet
    h := erster Herr aus l, der noch verfügbar ist
    Gib das Paar (h,d) aus
    entferne h aus H

Geordnete Mengen können wir einfach mit einer List darstellen. Die Abbildung von Damen auf Listen von Herren erfolgt mit einer Map.

Java:
List<String> damen = Arrays.asList("P","Q","R","S","T");
Set<String> herren = new HashSet<>(Arrays.asList("A","B","C","D","E"));
Map<String, List<String>> sympathien = new HashMap<>();
sympathien.put("P", Arrays.asList("A","B"));
sympathien.put("Q", Arrays.asList("B", "C"));
sympathien.put("R", Arrays.asList("A", "C", "D"));
sympathien.put("S", Arrays.asList("B", "D", "E"));
sympathien.put("T", Arrays.asList("C", "E"));

for (String dame : damen) {
    List<String> sympathisch = sympathien.get(dame);
    String herr = null;
    for (int i = 0, n = sympathisch.size(); herr == null && i < n; i++) {
        String kandidat = sympathisch.get(i);
        if (herren.contains(kandidat)) {
            herr = kandidat;
        }
    }
    System.out.printf("(%s,%s)\n", herr, dame);
    herren.remove(herr);
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
N ArrayList wird immer um zwei Elemente erweitert Java Basics - Anfänger-Themen 9
B zwei zufällige elemente aus array lesen und überprüfen Java Basics - Anfänger-Themen 8
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
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
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
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
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
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
A Methoden Char-Arrays auf aufeinanderfolgende Elemente vergleichen! Java Basics - Anfänger-Themen 7
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
M Elemente eines Arrays verschieben Java Basics - Anfänger-Themen 9
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 Elemente von 2 Arrays vergleichen Java Basics - Anfänger-Themen 12
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
H Redundante Elemente aus ArrayList entfernen Java Basics - Anfänger-Themen 3
T Elemente im Vector werden einfach überschrieben! Java Basics - Anfänger-Themen 3
A Elemente aus Liste entfernen Java Basics - Anfänger-Themen 5
A Elemente in HashSet enthalten oder nicht Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben