{"id":4026,"date":"2023-12-01T16:00:08","date_gmt":"2023-12-01T16:00:08","guid":{"rendered":"https:\/\/msgprogramator.sk\/?p=4026"},"modified":"2025-10-22T11:23:37","modified_gmt":"2025-10-22T11:23:37","slug":"java-programmierung-beispiel","status":"publish","type":"post","link":"https:\/\/msgprogramator.sk\/de\/java-programmierung-beispiel\/","title":{"rendered":"Java Programmierbeispiele: Erstelle eine n\u00fctzliche Anwendung, um zuf\u00e4llige Spiele von Doppelteams zu generieren"},"content":{"rendered":"<p>In diesem Artikel m\u00f6chte ich zeigen, wie sich reale Probleme mit der <a href=\"https:\/\/msgprogramator.sk\/java\/\">Programmiersprache Java<\/a> leicht l\u00f6sen lassen.<\/p>\n<h2>Auftrag<\/h2>\n<p>Gemeinsam werden wir ein Programm erstellen, das aus den N angemeldeten Personen einzigartige Paare bildet. Aus diesen Paaren werden dann nach dem Zufallsprinzip 2 Teams gebildet, die gegeneinander spielen. Das Ziel ist es, alle m\u00f6glichen Varianten von Spielen zu erstellen, so dass jedes Team gegen die \u00fcbrigen Teams spielt. <\/p>\n\n<h2>Vorschlag f\u00fcr eine L\u00f6sung<\/h2>\n<p>Wenn Sie eine komplexere Aufgabe l\u00f6sen, empfiehlt es sich, sie in kleinere Teile aufzugliedern und diese separat zu l\u00f6sen. In diesem Fall k\u00f6nnte die Aufgabe in die folgenden Schritte unterteilt werden: <\/p>\n<ul>\n<li>das Einlesen der angemeldeten Personen und deren Speicherung im Speicher des Programms,<\/li>\n<li>die Erstellung von Paarvariationen ohne Wiederholungen,<\/li>\n<li>die Erstellung aller m\u00f6glichen Spiele von zwei Doppelpaaren,<\/li>\n<li>das zuf\u00e4llige Mischen der generierten Matches,<\/li>\n<li>Auflistung der Ergebnisse.<\/li>\n<\/ul>\n<p>Wir werden uns nun jeden Schritt genauer ansehen.<\/p>\n<h2>Das Einlesen der angemeldeten Personen und deren Speicherung im Programmspeicher<\/h2>\n<p>In diesem Abschnitt lesen wir die Liste der Namen der angemeldeten Personen aus der Datei und speichern sie in der <em>Personenliste<\/em>. Eine Person wird durch die Klasse <strong>Person<\/strong> repr\u00e4sentiert. <\/p>\n<h2>Erstellung von Paarvariationen ohne Wiederholungen<\/h2>\n<p>Wenn wir Personen geladen haben, m\u00fcssen wir alle m\u00f6glichen Paare von ihnen erstellen, damit sich die Personen darin nicht wiederholen und nat\u00fcrlich sollte jedes Paar einzigartig sein. Bei einem Paar ist uns die Reihenfolge, wer das erste oder zweite Mitglied ist, egal. Ein solches Zweierteam wird durch die Klasse <strong>Pair<\/strong> repr\u00e4sentiert und wir speichern die Ergebnisse in der Liste <em>UniquePairs<\/em>.   <\/p>\n<h2>Erstellung aller m\u00f6glichen Spiele von zwei Doppelpaaren<\/h2>\n<p>Aus den gebildeten Zweierteams erstellen wir alle m\u00f6glichen Spiele, damit jedes Team gegen jedes andere Team spielen kann. Wir m\u00fcssen jedoch sicherstellen, dass ein bestimmtes Paar in einem Spiel nur in einem Team spielt, d. h. ein Paar kann nicht in einem Spiel gegeneinander spielen und gleichzeitig kann kein Spieler gleichzeitig in zwei Teams spielen. <\/p>\n<p>Ein Spiel wird durch die Klasse \u201eZapas\u201c repr\u00e4sentiert, die wir zur weiteren Verarbeitung in der Liste \u201e<em>zapasy<\/em>\u201c speichern.<\/p>\n<h2>Zuf\u00e4lliges Mischen der generierten Matches<\/h2>\n<p>Um die Sache aufzupeppen, f\u00fcgen wir ein Element des Zufalls hinzu, indem wir die generierten Spiele zuf\u00e4llig mischen.<\/p>\n<h2>Auflistung der Ergebnisse<\/h2>\n<p>F\u00fcr diese Art von Konsolenanwendung reicht es aus, die Ergebnisse auf der Konsole auszugeben.<\/p>\n<h2>Implementierung des Entwurfs in der Programmiersprache Java<\/h2>\n<p>Sobald wir die wichtigsten Schritte des Programms identifiziert haben, haben wir keine andere Wahl, als das Programm zu programmieren. Wir werden ein Turniersystem f\u00fcr Spiele zwischen Gruppen von Teams (Paaren von Personen) erstellen. Damit Sie eine bessere Vorstellung davon bekommen, was das Programm tut, erkl\u00e4re ich es Ihnen Schritt f\u00fcr Schritt:  <\/p>\n<p><u>Person.java<\/u><\/p>\n<pre><code class=\"language-java\" data-line=\"\">package entities;\n\npublic class Osoba {\n    public String meno;\n\n    public Osoba(String meno) {\n        this.meno = meno;\n    }\n}\n<\/code><\/pre>\n<p>Definiert eine Klasse <strong>Person<\/strong> mit einem Attribut name, das den Namen der Person darstellt.<\/p>\n<p><u>Ehepaar.java<\/u><\/p>\n<pre><code class=\"language-java\" data-line=\"\">package entities;\n\npublic class Dvojica {\n    public Osoba osoba1;\n    public Osoba osoba2;\n\n    public Dvojica(Osoba osoba1, Osoba osoba2) {\n        this.osoba1 = osoba1;\n        this.osoba2 = osoba2;\n    }\n}\n<\/code><\/pre>\n<p>Definiert die Klasse <strong>Pair<\/strong>, die zwei Personen (Person1 und Person2) enth\u00e4lt und ein Personenpaar oder ein aus zwei Personen bestehendes Team darstellt. <\/p>\n<p><u>Zapas.java<\/u><\/p>\n<pre><code class=\"language-java\" data-line=\"\">package entities;\n\npublic class Zapas {\n    public Dvojica tim1;\n    public Dvojica tim2;\n\n    public Zapas(Dvojica tim1, Dvojica tim2) {\n        this.tim1 = tim1;\n        this.tim2 = tim2;\n    }\n}\n<\/code><\/pre>\n<p>Die Klasse <strong>\u201eZapas\u201c<\/strong> stellt einen Kampf zwischen zwei Paaren bzw. Teams (Team1 und Team2) dar. <\/p>\n<p><u>Generator.java<\/u><\/p>\n<pre><code class=\"language-java\" data-line=\"\">package entities;\n\nimport entities.*;\nimport java.io.IOException;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class Generator {\n    private List&lt;Osoba&gt; ludia;\n    private List&lt;Dvojica&gt; unikatneDvojice;\n    private List&lt;Zapas&gt; zapasy;\n\n    public void Generator() {\n        ludia = null;\n        unikatneDvojice = null;\n        zapasy = null;\n    }\n\n    public void nacitajVstupneData() throws IOException {\n        ludia = new ArrayList&lt;&gt;();\n        for(String line : Files.readAllLines(Paths.get(&quot;vstupy.txt&quot;))) {\n            ludia.add(new Osoba(line));\n        }\n    }\n\n    \/\/ Vytvori v\u0161etky mo\u017en\u00e9 dvojice z \u013eud\u00ed\n    public void vygenerujUnikatneDvojice() {\n        unikatneDvojice = new ArrayList&lt;&gt;();\n        for (int i = 0; i &lt; ludia.size(); i++) {\n            for (int j = i + 1; j &lt; ludia.size(); j++) {\n                Dvojica dvojica = new Dvojica(ludia.get(i), ludia.get(j));\n                unikatneDvojice.add(dvojica);\n            }\n        }\n    }\n\n    \/\/ Vytvori v\u0161etky mo\u017en\u00e9 z\u00e1pasy s dan\u00fdmi dvojicami\n    public void vygenerujUnikatneZapasy() {\n        zapasy = new ArrayList();\n\n        for (int i = 0; i &lt; unikatneDvojice.size(); i++) {\n            for (int j = i + 1; j &lt; unikatneDvojice.size(); j++) {\n                Dvojica tim1 = unikatneDvojice.get(i);\n                Dvojica tim2 = unikatneDvojice.get(j);\n                if(tim1.osoba1.equals(tim2.osoba1) || tim1.osoba1.equals(tim2.osoba2) || tim1.osoba2.equals(tim2.osoba1) || tim1.osoba2.equals(tim2.osoba2))\n                    continue;\n                zapasy.add(new Zapas(tim1, tim2));\n            }\n        }\n    }\n\n    public List&lt;Osoba&gt; getLudia() {\n        return ludia;\n    }\n\n    public List&lt;Dvojica&gt; getUnikatneDvojice() {\n        return unikatneDvojice;\n    }\n\n    public List&lt;Zapas&gt; getZapasy() {\n        return zapasy;\n    }\n}\n<\/code><\/pre>\n<p>Die Klasse <strong>Generator<\/strong> ist f\u00fcr das Laden, die Verarbeitung der Daten und die Generierung der Ergebnisse verantwortlich. Verwendet drei Listen (ludia, unikatneDvojice und zapasy) zur Verwaltung von Informationen \u00fcber Personen, Teams und Matches. <\/p>\n<p>Der Konstruktor Generator() initialisiert die Listen mit dem Wert null.<\/p>\n<p>Die Methode nacitajVstupneData() l\u00e4dt Daten \u00fcber Personen aus der Datei <em>vstupy.txt<\/em> und erstellt daraus Objekte vom Typ <strong>Osoba<\/strong>, die in der Liste <em>ludia <\/em> gespeichert werden.<\/p>\n<p>Die Methode vygenerujUnikatneDvojice() erstellt alle m\u00f6glichen Paare von Personen und speichert diese in der Liste <em>unikatneDvojice.<\/em><\/p>\n<p>Die Methode vygenerujUnikatneZapasy() erstellt alle m\u00f6glichen Matches zwischen den Paaren und speichert diese in der Liste <em>zapasy<\/em>. Stellt sicher, dass keine zwei Personen in verschiedenen Paaren wiederholt werden.<\/p>\n<p>Zugriffsmethoden getPeople(), getUniqueDoubles(), getZapasy() &#8211; erm\u00f6glichen den Zugriff auf einzelne Listen.<\/p>\n<p><u>Main.java<\/u><\/p>\n<pre><code class=\"language-java\" data-line=\"\">import java.io.IOException;\nimport java.util.Collections;\nimport java.util.Random;\n\nimport entities.*;\n\npublic class Main {\n    public static void main(String[] args) throws IOException {\n        Generator generator = new Generator();\n        generator.nacitajVstupneData();\n\n        System.out.println(&quot;Prihlaseni ludia [&quot; +  generator.getLudia().size() + &quot;]: &quot;);\n        for (Osoba osoba : generator.getLudia()) {\n            System.out.println(osoba.meno);\n        }\n        System.out.println();\n\n        generator.vygenerujUnikatneDvojice();\n        System.out.println(&quot;Mozne dvojice [&quot; +  generator.getUnikatneDvojice().size() + &quot;]: &quot;);\n        for (Dvojica dvojica : generator.getUnikatneDvojice()) {\n            System.out.println(dvojica.osoba1.meno + &quot; a &quot; + dvojica.osoba2.meno);\n        }\n        System.out.println();\n\n        generator.vygenerujUnikatneZapasy();\n        Collections.shuffle(generator.getZapasy(), new Random());\n        System.out.println(&quot;Zapasy kazdy s kazdym v nahodnom poradi [&quot; +  generator.getZapasy().size() + &quot;]: &quot;);\n        for (Zapas zapas : generator.getZapasy()) {\n            System.out.println(zapas.tim1.osoba1.meno + &quot; a &quot; + zapas.tim1.osoba2.meno + &quot; vs. &quot; +\n                    zapas.tim2.osoba1.meno + &quot; a &quot; + zapas.tim2.osoba2.meno);\n        }\n    }\n}\n<\/code><\/pre>\n<p>Es enth\u00e4lt die Methode main(), die die Funktionalit\u00e4t des Programms demonstriert. Erstellt eine Instanz der Klasse <strong>Generator<\/strong>. L\u00e4dt die Eingangsdaten \u00fcber Personen und gibt die angemeldeten Personen aus. Generiert alle m\u00f6glichen eindeutigen Paare und listet sie auf. Erzeugt alle m\u00f6glichen Matches, sortiert diese dann zuf\u00e4llig und gibt sie auf der Konsole aus.    <\/p>\n<p>Das Programm ist f\u00fcr beliebig viele Personen geeignet und kann leicht angepasst und f\u00fcr spezifische Anforderungen modifiziert werden.<\/p>\n<p><u>Programmeintrag:<\/u><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2142 size-thumbnail\" src=\"https:\/\/msgprogramator.sk\/wp-content\/uploads\/2023\/12\/vstup-programu-440-490-150x150.webp\" alt=\"Erzeugt eine Instanz der Klasse Generator. Ruft Eingabedaten \u00fcber Personen ab und listet die eingeloggten Personen auf. Erzeugt alle m\u00f6glichen eindeutigen Paare und listet sie auf. \" width=\"150\" height=\"150\"><\/p>\n<p><u>Programmausgabe:<\/u><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2144 size-full\" src=\"https:\/\/msgprogramator.sk\/wp-content\/uploads\/2023\/12\/vystup-programu-420-920.webp\" alt=\"Das Programm ist f\u00fcr beliebig viele Personen geeignet und kann leicht angepasst und f\u00fcr spezifische Anforderungen modifiziert werden.\" width=\"420\" height=\"920\" srcset=\"https:\/\/msgprogramator.sk\/wp-content\/uploads\/2023\/12\/vystup-programu-420-920.webp 420w, https:\/\/msgprogramator.sk\/wp-content\/uploads\/2023\/12\/vystup-programu-420-920-137x300.webp 137w\" sizes=\"auto, (max-width: 420px) 100vw, 420px\" \/><\/p>\n<h2>\u00dcbung 1<\/h2>\n<p>Roz\u0161\u00edr triedu Osoba o atrib\u00fat pohlavie (mu\u017e, \u017eena).<\/p>\n<p>\u00c4ndern Sie die Methode generateUniqueDoubles(), um alle m\u00f6glichen Paare aus Personen zu erzeugen, so dass das Team aus einem Mann und einer Frau besteht. Generieren Sie dann die m\u00f6glichen \u00dcbereinstimmungen. <\/p>\n<p>Speichern Sie die Ergebnisse in der Ausgabedatei.<\/p>\n<h2>\u00dcbung 2 (Herausforderung)<\/h2>\n<p>Wenn Sie eine Instanz des Generators erstellen, geben Sie eine Zahl an, die bestimmt, wie viele Teams erstellt werden m\u00fcssen. \u00c4ndern Sie dann den Code aus dem Beispiel, damit er f\u00fcr beliebig gro\u00dfe Teams funktioniert. <\/p>\n<h2>Java Code Beispiel<\/h2>\n<p>Wir haben die Dateien mit dem obigen Beispiel in Form von Code vorbereitet, den du direkt in Java ausf\u00fchren kannst. Laden Sie den <a href=\"https:\/\/msgprogramator.sk\/wp-content\/uploads\/2023\/11\/GerneratorZapasov.zip\">Java-Beispielcode hier herunter .<\/a><\/p>\n<p>Wenn das Erstellen von Code aus einem Auftrag kein Problem f\u00fcr Sie ist und Sie ein erfahrener <a href=\"https:\/\/msg-life.sk\/de\/stellenangebote\/java-entwickler-senior\/\">Java-Programmierer<\/a> sind, sollten Sie sich unsere <a href=\"https:\/\/msg-life.sk\/de\/mitarbeiter-benefits\/\">Unternehmensvorteile<\/a> ansehen und auf <a href=\"https:\/\/msg-life.sk\/de\/stellenangebote\/\">Stellenausschreibungen reagieren .<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wir haben eine Aufgabenstellung f\u00fcr dich, bei der du deine Java-Kenntnisse testen und anschlie\u00dfend \u00fcberpr\u00fcfen kannst. <\/p>\n","protected":false},"author":14,"featured_media":4030,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[62],"tags":[],"class_list":["post-4026","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts\/4026","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/comments?post=4026"}],"version-history":[{"count":4,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts\/4026\/revisions"}],"predecessor-version":[{"id":9344,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts\/4026\/revisions\/9344"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/media\/4030"}],"wp:attachment":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/media?parent=4026"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/categories?post=4026"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/tags?post=4026"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}