<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.freitagsrunde.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Andre</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.freitagsrunde.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Andre"/>
	<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/Spezial:Beitr%C3%A4ge/Andre"/>
	<updated>2026-06-06T12:18:18Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Diskussion:Abschlussarbeit&amp;diff=15111</id>
		<title>Diskussion:Abschlussarbeit</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Diskussion:Abschlussarbeit&amp;diff=15111"/>
		<updated>2010-10-03T21:14:31Z</updated>

		<summary type="html">&lt;p&gt;Andre: Die Seite wurde neu angelegt: „warum gehen die links nicht? --~~~~“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;warum gehen die links nicht? --[[Benutzer:Andre|Andre]] 23:14, 3. Okt. 2010 (CEST)&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben&amp;diff=13720</id>
		<title>Javakurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben&amp;diff=13720"/>
		<updated>2010-03-25T16:35:20Z</updated>

		<summary type="html">&lt;p&gt;Andre: /* Die Aufgaben */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wir haben jeder Aufgabe eine Einschätzung ihrer Schwierigkeit auf einer Skala von 1 bis 10 vorangestellt. Bei dieser Einschätzung sind wir von einem Gehirn ausgegangen, für welches das jeweilige Themengebiet völlig neu ist, das jedoch schon ein ganz gutes Verständnis dafür hat wie eine Programmiersprache denn so funktioniert. &lt;br /&gt;
Entsprechend kann eine schwer bewertete Aufgabe aus einem frühen Themengebiet für manch einen sehr einfach oder eine leicht bewertete aus einem späten Themengebiet für einen anderen sehr schwer sein. Es ist nur ein Wert, der euch helfen soll eure nächste Aufgabe zu wählen. Einen kleinen Überblick zu den Schwierigkeitsgraden findet ihr ganz unten auf dieser Seite.&lt;br /&gt;
&lt;br /&gt;
Falls ihr Anmerkungen zu den Aufgaben habt, könnt ihr die Diskussionsseiten der jeweiligen Aufgaben nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Aufgabe&lt;br /&gt;
 !Schwierigkeit&lt;br /&gt;
 !Vorwissen&lt;br /&gt;
 !Lerneffekte&lt;br /&gt;
 !Überprüfer(Status)&lt;br /&gt;
 !Musterlösung&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Von der Console zum HelloWorld | Vom Arbeiten mit der Konsole bis &amp;quot;Hallo Welt&amp;quot;]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Einfaches Arbeiten mit der Kommandozeile &amp;lt;br&amp;gt; Kompilieren und Ausführen von Javacode&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Variablen_und_Zuweisungen | Variablen und Zuweisungen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Deklarieren und definieren von Variablen&amp;lt;br&amp;gt;grundlegende Regeln der Codeformatierung&lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Cowsay | Cowsay oder &amp;quot;Wie macht die Kuh?&amp;quot;]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | etwas mehr Bildschirmausgabe&amp;lt;br&amp;gt;schöne Graphiken&lt;br /&gt;
 | tkroenert (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Kassenbon | Erstellen eines Kassenbons]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Arbeiten mit Variablen&amp;lt;br&amp;gt;Fallunterscheidungen&lt;br /&gt;
 | AndyF (ok), Katrin (Alignment-Vorgabe hinzugefügt, siehe Kommentar)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Javamenue | Ein eigenes Menü]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Lesen von Benutzereingaben über die Konsole&amp;lt;br&amp;gt;Fallunterscheidungen&lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Glücksspiel | Glücksspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Anwenden von Fallunterscheidungen &lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Arrays | Quickies Arrays]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Verwenden von Arrays&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 | [[Javakurs2007/Arrays/Musterloesung | Musterlösung Quickies Arrays]]&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Verschachtelte_Schleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Primzahlenaufgabe | Primzahlen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Geschicktes Einsetzen von Schleifen und Arrays&lt;br /&gt;
 | andy (okay) &amp;lt;!-- === Andy ==== bei der Primzahl ist teil b leicht schafbar wenn man a gemacht hat deshalb keine musterlösung --&amp;gt;&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Wetterstation | Wetterstation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Schleifen und Arrays&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Geometrie | Geometrie]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Methoden schreiben&amp;lt;br&amp;gt;schreiben mathematischer Funktionen&lt;br /&gt;
 | AndyF (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Zweierpotenzen | Zweierpotenzen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Schleifen und Arrays&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Schleifen_und_Modulo | Schleifen und Modulo]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Verwendung von Schleifen&amp;lt;br&amp;gt;Benutzung des Modulo-Operators&lt;br /&gt;
 | andy(okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Methoden | Quickies zu Methoden]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Verwenden von Methoden&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/MathematischeMethoden | Mathematische Methoden]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schreiben eigener Methoden&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Schaltjahr | Schaltjahr]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schreiben von Methoden&amp;lt;br&amp;gt;Fallunterscheidungen&amp;lt;br&amp;gt;Benutzerinteraktion&lt;br /&gt;
 | andy (okay) &amp;lt;!-- === Andy === Zusatzaufgabe keine Musterlösung, ist aber auch einfach zu lösen--&amp;gt;&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Crack_the_Password | Crack the Password]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2/3. VL&lt;br /&gt;
 | Passwörter knacken ;-)&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Rekursion_vs._Iteration | Rekursion vs. Iteration]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Fehler finden&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Lineare_Funktionen | Lineare Funktionen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Verwendung von Methoden&amp;lt;br&amp;gt;Schleifen und Arrays&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Fibonacci | Fibonaccizahlen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schleifen und Arrays&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Brainfuck | Brainfuck vs Turingmaschine]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Arbeiten mit Arrays&amp;lt;br&amp;gt;Allgemeinwissen :-)&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Gau%C3%9F-Algorithmus | Gauß-Algorithmus]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Arrays und Matrizen&lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Zahlenumrechner | Zahlenumrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Arbeiten mit Methoden&amp;lt;br&amp;gt;mathematisches Denken&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs 2007/Democracy | Der Fehler im System]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Fehler finden&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Quersumme | Spaß mit Quersummen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5 - 7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Benutzung des Modulo-Operators&amp;lt;br&amp;gt;Auslagern von Funktionalität in Methoden&lt;br /&gt;
 | AndyF (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Appleman | Appleman und Fraktale]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schleifen, Umgang mit Fließkommazahlen&lt;br /&gt;
 | AndyF (ok), ÜBB-Link fixed(Jörg)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/DiffusionLimitedAggregation | Diffusion Limited Aggregation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | 2-dimensionale Arrays, Methoden, Schleifen&lt;br /&gt;
 | Dirk (dabei)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Palindrome | Palindrome]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Entwurf von Programmen&amp;lt;br&amp;gt;Parameterübergabe beim Programmaufruf&lt;br /&gt;
 | Jörg (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Hangman | Hangman]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Entwurf von Programmen&amp;lt;br&amp;gt;Arbeiten mit Methoden&lt;br /&gt;
 | Jörg (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/SelectionSort | Selection Sort]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Verstehen von komplexeren Algorithmen&amp;lt;br&amp;gt;Schleifen und Arrays&amp;lt;br&amp;gt;(Hilfs-)Methoden&lt;br /&gt;
 | Jörg (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Cäsar-Chiffre | Chiffrierung/Dechiffrierung (Cäsar)]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | eigenständiges Problemlösen. &amp;lt;br&amp;gt; Alle Konzepte des Kurses&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
 | [[Javakurs2007/Cäsar-Chiffre/Musterloesung | Musterlösung Cäsar-Chiffre]]&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Abzaehlspiel | Abzählspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Analyse von Aufgabenstellungen&amp;lt;br&amp;gt;Entwurf eines komplexen Programms von Grund auf&lt;br /&gt;
 | alexK (ok)&lt;br /&gt;
 | [[Javakurs2007/Abzaehlspiel/Musterloesung | Musterlösung Abzählspiel]]&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2006/Rennschnecke | Schneckenrennen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Objektorientierte Programmierung&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
 | [[Javakurs2006/Rennschnecke/Musterloesung | Musterlösung Rennschnecke]]&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Studentendatenbank_LE5 | Studentendatenbank]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Vertiefung in objektorientiertes Programmieren&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Multiarray| Mehrdimensionale Arrays]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |10&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Methoden, Schleifen, Arrays&amp;lt;br&amp;gt;Objektorientierung&lt;br /&gt;
 | Katrin (dabei)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Canvas | Virtuelles Canvas mit 3D-Objekten]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Arbeiten mit Methoden&amp;lt;br&amp;gt;mathematisches Denken&lt;br /&gt;
 | alexK (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Doom | ASCII DOOM ]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Vertiefung in objektorientierte Programmierung&amp;lt;br&amp;gt;Benutzung der Java-API&lt;br /&gt;
 | Mario (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Textwordcount | Texte lesen und analysieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | eigenständiges Problemlösen&lt;br /&gt;
 | Dirk (dabei)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schwierigkeitsgrade ==&lt;br /&gt;
&lt;br /&gt;
#  Reines Tutorial. Man muss nicht viel selbst denken&lt;br /&gt;
#  ...&lt;br /&gt;
#  Leichte Übungsaufgabe. Studies, die noch eher unsicher sind werden hier gut begleitet.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Typische Aufgabe. Man muss den Kopf benutzen, bekommt an schwierigen Stellen aber Hilfestellungen.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Herausfordernd, eher etwas für Studies die etwas fitter sind.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Auch erfahrene Programmierer weden hier ein bis zwei Übungen beschäftigt sein&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#  Tja, die Idee war da. Wir finden sie auch gut, aber es könnte wirklich anstrengend werden.&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
- Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Javakurs_2010/Feedback|Feedback zum Kurs 2010]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java]]&lt;br /&gt;
[[Kategorie:Java_Aufgaben]]&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/ArrayList&amp;diff=13716</id>
		<title>Javakurs/Übungsaufgaben/ArrayList</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/ArrayList&amp;diff=13716"/>
		<updated>2010-03-25T13:18:54Z</updated>

		<summary type="html">&lt;p&gt;Andre: /* Ein kleines Beispielprogramm für ArrayList */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Eine ArrayList ist ein Hilfsmittel, um Listen mit sich ändernder Größe &lt;br /&gt;
zu verwalten. Sie sind im 'Lieferumfang' von Java enthalten.&lt;br /&gt;
&lt;br /&gt;
Javadoc zu [http://java.sun.com/j2se/1.4.2/docs/api/java/util/ArrayList.html ArrayList]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Arrays - Wozu benötigen wir eine ArrayList? ==&lt;br /&gt;
Wenn man ein Array benutzt, so muss man schon beim Anlegen wissen,&lt;br /&gt;
wieviele Elemente man darin speichern will. &lt;br /&gt;
&lt;br /&gt;
Im Code sieht das so aus:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 int[] foo = new int[4];&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Will man nun aber 5 Elemente in dem schon angelegten Array speichern, so müsste man erst ein&lt;br /&gt;
größeres Array anlegen und dann alle Elemente kopieren:&lt;br /&gt;
      &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
        //wir wollen ein 5. Element - was nun?!&lt;br /&gt;
        int[] bar = new int[5];          // neues Array erzeugen&lt;br /&gt;
        for (int i=0;i&amp;lt;foo.length;i++){  // array durchlaufen&lt;br /&gt;
            bar[i]=foo[i];               // Werte kopieren&lt;br /&gt;
        }&lt;br /&gt;
         foo=bar;                        //alte Referenz überschreiben&lt;br /&gt;
         &lt;br /&gt;
         foo[5] = 5;                     // Wert hinzufügen&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf Dauer ist das keine Lösung, zumal dies bei jedem weiteren Vergrößern &lt;br /&gt;
notwendig wird - je länger das Array ist, desto länger dauert die Aktion.&lt;br /&gt;
&lt;br /&gt;
Die Rettung heißt: ArrayList&lt;br /&gt;
&lt;br /&gt;
== Ein kleines Beispielprogramm für ArrayList ==&lt;br /&gt;
&lt;br /&gt;
Im Folgenden seht Ihr ein vollständiges und lauffähiges Programm, dass mehr&lt;br /&gt;
oder minder sinnvolle Operationen mit einer Array-List vollführt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// WICHTIG: Einbinden der ArrayList aus der java-api:&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
&lt;br /&gt;
public class ArrayListExample {&lt;br /&gt;
    &lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
    &lt;br /&gt;
        //anlegen einer ArrayListe&lt;br /&gt;
        ArrayList&amp;lt;String&amp;gt; liste = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;
        &lt;br /&gt;
        //fuellen der Liste mit Daten&lt;br /&gt;
        liste.add(&amp;quot;Apfel&amp;quot;);&lt;br /&gt;
        liste.add(&amp;quot;Birne&amp;quot;);&lt;br /&gt;
        liste.add(&amp;quot;Stuhl&amp;quot;);&lt;br /&gt;
        liste.add(&amp;quot;Orange&amp;quot;);&lt;br /&gt;
        liste.add(&amp;quot;Zitrone&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
        //Ausgeben der Liste&lt;br /&gt;
        System.out.println(liste);&lt;br /&gt;
        &lt;br /&gt;
        //Hmm - der gehoert hier nicht rein!&lt;br /&gt;
        liste.remove(&amp;quot;Stuhl&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // nochmal ausgeben&lt;br /&gt;
        System.out.println(liste);&lt;br /&gt;
        &lt;br /&gt;
        //testen ob Stuhl enthalten:&lt;br /&gt;
        if (liste.contains (&amp;quot;Stuhl&amp;quot;)){&lt;br /&gt;
            System.out.println(&amp;quot;Der Stuhl ist noch drin.&amp;quot;);&lt;br /&gt;
        }else{&lt;br /&gt;
            System.out.println(&amp;quot;Der Stuhl ist draußen.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // testen ob Birne enthalten:&lt;br /&gt;
        if (liste.contains (&amp;quot;Birne&amp;quot;)){&lt;br /&gt;
            System.out.println(&amp;quot;Die Birne ist noch drin.&amp;quot;);&lt;br /&gt;
        }else{&lt;br /&gt;
            System.out.println(&amp;quot;Die Birne ist draußen.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ArrayList bietet noch einige weitere Methoden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   int  liste.size();       // liefert die Anzahl der Elemente in der Liste&lt;br /&gt;
   Object liste.get(int i); // liefert den Eintrag an Stelle i&lt;br /&gt;
   liste.remove(int i);     // entfernt den Eintrag an Stelle i&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Art und Weise, wie in diesem Beispiel die ArrayList benutzt wird hat nur einen kleinen Haken: Sie ist nicht typsicher. Das bedeutet, dass in der Liste alle Elemente&lt;br /&gt;
als Typ '''Object''' gespeichert werden. Daher muss man sie explizit umwandeln:&lt;br /&gt;
&lt;br /&gt;
Die Zeile:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   String obst = liste.get(2);&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
ergibt beim compilieren einen Fehler, da in der Liste &amp;quot;Objects&amp;quot; gespeichert sind und keine Strings.&lt;br /&gt;
&lt;br /&gt;
Das bedeutet zwar, dass man in diese ArrayList nicht nur Strings hinein geben kann, sondern beliebige Typen. Das klingt erst einmal gut, weil man sich ja nicht nur auf Strings beschränken will - aber wie bekommen wir nun Strings heraus?&lt;br /&gt;
&lt;br /&gt;
=== Generics ===&lt;br /&gt;
&lt;br /&gt;
Eine Möglichkeit besteht darin, die sogenannten &amp;quot;Generics&amp;quot; zu benutzen.&lt;br /&gt;
Keine Angst, auch wenn viele was anderes behaupten ist es eigentlich ganz einfach.&lt;br /&gt;
&lt;br /&gt;
Wir müssen dazu in unserem Beispiel nur eine Zeile ändern:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
        //anlegen einer ArrayListe&lt;br /&gt;
        ArrayList &amp;lt;String&amp;gt; liste = new ArrayList&amp;lt;String&amp;gt;();&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ab sofort erlaubt der Java Compiler uns nur noch Objekte vom Typ String in &lt;br /&gt;
der ArrayList zu speichern. Alles andere wird schon beim compilieren&lt;br /&gt;
verhindert, so dass wir gar keine falschen Typen mehr einfügen können.&lt;br /&gt;
&lt;br /&gt;
Versucht es ruhig einmal selber: &amp;lt;br&amp;gt;&lt;br /&gt;
Kopiert das ArrayList-Programm von oben zunächst ohne die Änderung. Dann erweitert es mit dem folgenden Kommando, um einen String für die Variable &amp;quot;obst&amp;quot; zu erhalten:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   String obst = liste.get(2);&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Casten ===&lt;br /&gt;
&lt;br /&gt;
Eine andere Möglichkeit besteht darin, dem Java-Compiler zu sagen, &lt;br /&gt;
dass Ihr euch sicher seid, keinen Typfehler zu machen und dass er den Typ&lt;br /&gt;
einfach umwandeln soll. Das nennt man casten und es funktioniert so:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
   String obst = (String) liste.get(2);&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit sagt ihr dem compiler: &amp;quot;Hey, ich weiß dass da etwas anderes als ein String&lt;br /&gt;
rauskommt. Ich bin mir aber sicher, dass man das Element wie einen String behandeln kann!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Das Problem an der Lösung ist, dass man unheimlich aufpassen muss, nicht versehentlich doch z.B. eine Rennschnecke im Array gespeichert zu haben, weil es dann einen Fehler zur Laufzeit des Programms gibt.&lt;br /&gt;
&lt;br /&gt;
== Ein Beispiel für komplexe Datentypen ==&lt;br /&gt;
&lt;br /&gt;
Im Folgenden seht ihr drei Klassen, bei der in der ersten&lt;br /&gt;
eine ArrayList zum Einsatz kommt, um die Teilnehmer an einem&lt;br /&gt;
Praktikum zu verwalten. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * DATEI: Praktikum.java&lt;br /&gt;
 */&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
&lt;br /&gt;
 class Praktikum {&lt;br /&gt;
&lt;br /&gt;
    String name;&lt;br /&gt;
&lt;br /&gt;
    ArrayList&amp;lt;Student&amp;gt; studenten; // ArrayList nur fuer Studenten&lt;br /&gt;
&lt;br /&gt;
    Praktikum(String aName) {&lt;br /&gt;
        this.name = aName;&lt;br /&gt;
        this.studenten = new ArrayList&amp;lt;Student&amp;gt;();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    void addStudent(Student aStudent) {&lt;br /&gt;
        studenten.add(aStudent);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //TODO: removeStudent - &lt;br /&gt;
    // durch die studenten gehen und nach z.B. dem Namen suchen,&lt;br /&gt;
    // etc.... ;) &lt;br /&gt;
&lt;br /&gt;
    double getAverageGrade() {&lt;br /&gt;
        double average = 0; // initialisieren des Durchschnitts&lt;br /&gt;
        int numberOfStudents = studenten.size();&lt;br /&gt;
&lt;br /&gt;
        if (numberOfStudents &amp;gt; 0) { // vermeiden der Division duch 0&lt;br /&gt;
            for (int position = 0; position &amp;lt; numberOfStudents; position++) {&lt;br /&gt;
                Student current = studenten.get(position);&lt;br /&gt;
                average += current.grade;&lt;br /&gt;
            }&lt;br /&gt;
            average = average / numberOfStudents;&lt;br /&gt;
        }&lt;br /&gt;
        return average;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public String toString(){&lt;br /&gt;
        int numberOfStudents = this.studenten.size();&lt;br /&gt;
        String result= this.name+&amp;quot;: \n&amp;quot;;&lt;br /&gt;
        result +=      &amp;quot;Teilnehmer       : &amp;quot;+numberOfStudents +&amp;quot;\n&amp;quot;;&lt;br /&gt;
        result +=      &amp;quot;Durchschnittsnote: &amp;quot;+this.getAverageGrade()+&amp;quot;\n&amp;quot;;&lt;br /&gt;
        &lt;br /&gt;
        for (int position = 0; position &amp;lt; numberOfStudents; position++) {&lt;br /&gt;
            Student current = studenten.get(position);&lt;br /&gt;
            result += &amp;quot;   &amp;quot;+position+&amp;quot;.: &amp;quot;+current.name+&amp;quot; (&amp;quot;+current.grade+&amp;quot;) \n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return result;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * DATEI: Student.java&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
public class Student {&lt;br /&gt;
    &lt;br /&gt;
    double grade;&lt;br /&gt;
    String name;&lt;br /&gt;
    &lt;br /&gt;
    Student(String aName,double aGrade){&lt;br /&gt;
        this.grade=aGrade;&lt;br /&gt;
        this.name=aName;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * DATEI: TestPraktikum.java&lt;br /&gt;
 */&lt;br /&gt;
public class TestPraktikum {&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
&lt;br /&gt;
          Praktikum unixPraktikum = new Praktikum(&amp;quot;UNIX-Praktikum&amp;quot;);&lt;br /&gt;
          &lt;br /&gt;
          Student florian = new Student(&amp;quot;Florian&amp;quot;,1.0);&lt;br /&gt;
          Student maximilian = new Student(&amp;quot;Maximilian&amp;quot;,2.8);&lt;br /&gt;
&lt;br /&gt;
          unixPraktikum.addStudent(florian);&lt;br /&gt;
          unixPraktikum.addStudent(maximilian);&lt;br /&gt;
          &lt;br /&gt;
          System.out.println(unixPraktikum);&lt;br /&gt;
          &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java]]&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Rennschnecke&amp;diff=13712</id>
		<title>Javakurs/Übungsaufgaben/Rennschnecke</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Rennschnecke&amp;diff=13712"/>
		<updated>2010-03-25T11:25:42Z</updated>

		<summary type="html">&lt;p&gt;Andre: /* Rennen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Rennschnecke ==&lt;br /&gt;
#Erstelle eine Klasse &amp;quot;Rennschnecke&amp;quot;&lt;br /&gt;
#:&lt;br /&gt;
#Rennschnecken sollen folgende Eigenschaften(Objektvariablen) besitzen:&lt;br /&gt;
#* einen Namen&lt;br /&gt;
#* eine Rasse&lt;br /&gt;
#* eine Maximalgeschwindigkeit (Veränderung der Strecke pro Schritt)&lt;br /&gt;
#* die Schnecke soll wissen welchen Weg sie bereits zurück gelegt hat&lt;br /&gt;
#:&lt;br /&gt;
# Erstelle für die Klasse Rennschnecke einen [[Javakurs2006/Java_Kurzreferenz#Konstruktor|Konstruktor]], der den Instanzvariablen beim Erstellen einer neuen Instanz (Objekt zu dieser Klasse) Werte zuweist.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennschnecke&amp;quot; eine Methode &amp;quot;krieche()&amp;quot; an, welche die Schnecke abhängig von ihrer Maximalgeschwindigkeit eine zufällige Strecke weiter bewegt. Soll heißen: Sie kriecht eine zufällige Strecke größer null und kleiner ihrer Maximalgeschwindigkeit. Nimm als Zeiteinheit 1 an.&lt;br /&gt;
#* Tipp: Schaut euch die Methode Math.random() aus der Java API an.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennschnecke&amp;quot; eine Methode &amp;quot;public String toString()&amp;quot; an, welche die Daten der Schnecke mit return als String zurückgibt.&lt;br /&gt;
#:&lt;br /&gt;
# Teste deine Klasse, indem du probehalber ein Rennschneckenobjekt erzeugst und seine Daten auf der Konsole ausgibst. &lt;br /&gt;
#*Tipp:Verwende zum Ausgeben der Daten die toString() Methode der Rennschnecke.&lt;br /&gt;
#:&lt;br /&gt;
#:&lt;br /&gt;
&lt;br /&gt;
== Rennen ==&lt;br /&gt;
&lt;br /&gt;
#Erstelle eine Klasse &amp;quot;Rennen&amp;quot;&lt;br /&gt;
#:&lt;br /&gt;
#Ein Rennen hat folgende Eigenschaften:&lt;br /&gt;
#*einen Namen&lt;br /&gt;
#*die Anzahl der teilnehmenden Schnecken&lt;br /&gt;
#*die teilnemenden Schnecken selbst, als:&lt;br /&gt;
#** Array: einfachere Umsetzung mit konstanter Teilnehmerzahl&lt;br /&gt;
#** [[Javakurs2007/ArrayList|ArrayList]]: schönere Umsetzung mit variabler Teilnehmerzahl&lt;br /&gt;
#*** Tipps:&lt;br /&gt;
#**** Verwende als Datentyp ArrayList&amp;lt;Rennschnecke&amp;gt;&lt;br /&gt;
#**** Verwende beim Erstellen new ArrayList&amp;lt;Rennschnecke&amp;gt;()&lt;br /&gt;
#*die Länge der zu kriechenden Strecke&lt;br /&gt;
#:&lt;br /&gt;
#Überlege dir, welche dieser Werte bereits im Konstruktor gesetzt werden sollten.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;void addRennschnecke(Rennschnecke neueSchnecke)&amp;quot; an, welche dem Rennen eine Schnecke hinzufügt.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;void removeRennschnecke(String name)&amp;quot; an, welche eine Schnecke aus dem Rennen entfernt. (nicht so einfach und kann erstmal übersprungen werden)&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;public String toString()&amp;quot; an, welche die Daten des Rennens mit return als String zurückgibt. &lt;br /&gt;
#*Tipp: Um die Daten der beteiligten Schnecken zurückzugeben, könnt ihr deren toString() Funktion benutzen.&lt;br /&gt;
#:&lt;br /&gt;
#Teste deine Klasse vom Hauptprogramm aus!&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;Rennschnecke ermittleGewinner()&amp;quot; an, welche '''null''' zurückliefert, wenn noch keine der teilnemenden Schnecken das Ziel erreicht hat und anderenfalls die Gewinnerschnecke zurückgibt.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;void lasseSchneckenKriechen()&amp;quot; an, welche alle teilnemenden Schnecken einmal kriechen lässt.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;void durchfuehren()&amp;quot; an, welche so lange lasseSchneckenKriechen() aufruft, bis eine der Schnecken das Ziel erreicht hat.&lt;br /&gt;
#* Tipp: Ob eine Schnecke im Ziel angekommen ist, kannst du mit deiner Methode ermittleGewinner() herrausfinden.&lt;br /&gt;
&lt;br /&gt;
== Wettbüro ==&lt;br /&gt;
&lt;br /&gt;
#Erstelle eine Klasse Wettbuero.&lt;br /&gt;
#:&lt;br /&gt;
#:Ein Wettbuero hat die folgenden Eigenschaften:&lt;br /&gt;
#* Es weiß, für welches Rennen es seine Wetten entgegennimmt.&lt;br /&gt;
#* Es verfügt über eine Liste (z.B. eine ArrayList) von angenommenen Wetten.&lt;br /&gt;
#* Es hat einen festen Faktor, mit welchem Wetteinsätze bei einem Gewinn multipliziert werden.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Wettbuero&amp;quot; eine Methode &amp;quot;wetteAnnehmen(String schneckenName, int wettEinsatz, String spieler)&amp;quot; an, welche eine Wette entgegennimmt. Die Wette ist bezogen auf eine Schnecke für das Rennen, das von dem Büro bearbeitet wird.&lt;br /&gt;
#* Um die einzelnen Wetten speichern zu können, sollten ihre Daten in eigenen Objekten der Klasse &amp;quot;Wette&amp;quot; gespeichert werden. Erstellt euch diese Klasse selbst. &lt;br /&gt;
#* Tipp: Denkt an toString().&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Wettbuero&amp;quot; eine Methode &amp;quot;rennenDurchfuehren()&amp;quot; an, welche das betreute Rennen durchfuert.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Wettbuero&amp;quot; eine Methode &amp;quot;toString()&amp;quot; an, welche die Daten des Wettbueros, die Daten des Rennens sowie sämtliche abgeschlossende Wetten als String zurückgibt.&lt;br /&gt;
#:&lt;br /&gt;
# Teste dein Programm!&lt;br /&gt;
#:&lt;br /&gt;
# Tausche die Klasse Rennen mit einem Kommilitonen, der ebenfalls bereits fertig ist.&lt;br /&gt;
#* Sollten eure Programme immer noch laufen?&lt;br /&gt;
#* Treten Fehler auf? Wenn ja: ändert eure Programme so ab, dass ihr problemlos Klassen austauschen könnt.&lt;br /&gt;
&lt;br /&gt;
== Zusatz ==&lt;br /&gt;
&lt;br /&gt;
Es gibt noch ein paar Dinge, die in unserem Wettbüro nicht so laufen wie sie sollten. &lt;br /&gt;
Macht sie besser.&lt;br /&gt;
&lt;br /&gt;
* Dieselbe Schnecke kann in ein Rennen zweimal eingetragen werden.&lt;br /&gt;
* Es können negative Wetten abgeschlossen werden.&lt;br /&gt;
* Gehen zwei Schnecken gleichzeitig durchs Ziel, wird die Schnecke ausgegeben, auf die die Suche nach dem Gewinner zuerst stößt. Das ist ganz schön ungerecht.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Zusatz Vererbung ==&lt;br /&gt;
&lt;br /&gt;
* Wo Geld im Spiel ist wird auch betrogen. Aus diesem Grund wollen wir jezt auch gedopte Rennschnecken an unseren Rennen teilnehmen lassen. &lt;br /&gt;
** Erstelle eine Klasse &amp;quot;Dopingschnecke&amp;quot;, welche alle Attribute und Methoden der gemeinen &amp;quot;Rennschnecke&amp;quot; erbt.&lt;br /&gt;
** Überschreibe den geerbten Constructor, so das &amp;quot;Dopingschnecken&amp;quot; eine wesentlich höhere Maximalgeschwindigkeit erhalten als normale &amp;quot;Rennschnecken&amp;quot;.&lt;br /&gt;
** Überschreibe die geerbte Methode &amp;quot;String toString()&amp;quot; so dass Dopingschnecken anders ausgegeben werden als Rennschnecken (z.B. durch einen zusatz wie &amp;quot;rote Augen&amp;quot; oder ähnliches)&lt;br /&gt;
** Mische in einem Rennen Dopingschnecken unter deine Rennschnecken. Du musst dafür keinerlei Funktionalitäten änder. Dein Programm muss nicht wissen ob es sich um eine Dopingschnecke handelt, denn sie ist ja auch eine Rennschnecke.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kommentare ==&lt;br /&gt;
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf &amp;quot;bearbeiten&amp;quot; und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit &amp;quot;Vorschau zeigen&amp;quot; kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.&lt;br /&gt;
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)&lt;br /&gt;
&lt;br /&gt;
==== Robert ====&lt;br /&gt;
Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Felix S. ====&lt;br /&gt;
&amp;quot;abhängig von ihrer Maximalgeschwindigkeit&amp;quot; verwirrte mehrmals Teilnehmer. Mathematischen Bezug/Verfahren hinschreiben bzw. erst mal auf das Kriechen konzentrieren.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java]]&lt;br /&gt;
[[Kategorie:Java_Aufgaben]]&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Rennschnecke/Musterloesung&amp;diff=13711</id>
		<title>Javakurs/Übungsaufgaben/Rennschnecke/Musterloesung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Rennschnecke/Musterloesung&amp;diff=13711"/>
		<updated>2010-03-25T10:31:45Z</updated>

		<summary type="html">&lt;p&gt;Andre: /* Rennen.java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Rennschnecke - Musterlösung =&lt;br /&gt;
&lt;br /&gt;
Dies ist eine ausführliche Musterlösung der Aufgabenstellung.&lt;br /&gt;
Vom Wettbüso gibt es zwei unterschiedliche Versionen, von denen die zweite die Zusatzaufgaben berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== Rennschnecke.java ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
package Schneckenrennen;&lt;br /&gt;
&lt;br /&gt;
import java.util.Random;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Eine Schnecke, welche an Rennen teilnehmen kann.&lt;br /&gt;
 * @author André Schulz&lt;br /&gt;
 * @version 1.0&lt;br /&gt;
 */&lt;br /&gt;
public class Rennschnecke&lt;br /&gt;
{&lt;br /&gt;
	private String name;&lt;br /&gt;
	private String rasse;&lt;br /&gt;
	private double vMax;&lt;br /&gt;
	private double strecke;// zurückgelegte Strcke am Startpunkt&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Konstruktor für Schnecken.&lt;br /&gt;
	 * @param name Name der Schnecke&lt;br /&gt;
	 * @param rasse Rasse der Schnecke&lt;br /&gt;
	 * @param vMax Maximalgeschwindigkeit der Schnecke&lt;br /&gt;
	 */&lt;br /&gt;
	public Rennschnecke(String name, String rasse, double vMax)&lt;br /&gt;
	{&lt;br /&gt;
		this.name = name;&lt;br /&gt;
		this.rasse = rasse;&lt;br /&gt;
		this.vMax = vMax;&lt;br /&gt;
		this.strecke = 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Bewegt die Schnecke mit einer zufälligen Geschwindigkeit (im Abhängigkeit von der Maximalgeschwindigkeit).&lt;br /&gt;
	 */&lt;br /&gt;
	public void krieche()&lt;br /&gt;
	{&lt;br /&gt;
		Random random = new Random();&lt;br /&gt;
		// Mximalgeschwindigkeit wird mit 0,01..1 multipliziert&lt;br /&gt;
		this.strecke += vMax * (random.nextInt(100) + 1) / 100;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt den Namen der Schnecke zurück.&lt;br /&gt;
	 * @return Name&lt;br /&gt;
	 */&lt;br /&gt;
	public String getName()&lt;br /&gt;
	{&lt;br /&gt;
		return name;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt die Rasse der Schnecke zurück.&lt;br /&gt;
	 * @return Rasse&lt;br /&gt;
	 */&lt;br /&gt;
	public String getRasse()&lt;br /&gt;
	{&lt;br /&gt;
		return rasse;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt die Maximalgeschwindigkeit zurück.&lt;br /&gt;
	 * @return Maximalgeschwindigkeit&lt;br /&gt;
	 */&lt;br /&gt;
	public double getVMax()&lt;br /&gt;
	{&lt;br /&gt;
		return vMax;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt die bereits zurückgelegte Strecke zurück.&lt;br /&gt;
	 * @return zurückgelegt Strecke&lt;br /&gt;
	 */&lt;br /&gt;
	public double getStrecke()&lt;br /&gt;
	{&lt;br /&gt;
		return strecke;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public String toString()&lt;br /&gt;
	{&lt;br /&gt;
		return &amp;quot;(&amp;quot; + name + &amp;quot;.&amp;quot; + rasse + &amp;quot;:&amp;quot; + vMax + &amp;quot;@&amp;quot; + strecke + &amp;quot;)&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Main-Methode (nur zum Testen)&lt;br /&gt;
	 * @param args (keine)&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args)&lt;br /&gt;
	{&lt;br /&gt;
		Rennschnecke snail = new Rennschnecke(&amp;quot;andre&amp;quot;, &amp;quot;human&amp;quot;, 100);&lt;br /&gt;
		System.out.println(snail);&lt;br /&gt;
	}&lt;br /&gt;
}// class Rennschnecke&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rennen.java ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
package Schneckenrennen;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Ein Rennen, an dem Schnecken teilnehmen.&lt;br /&gt;
 * @author André Schulz&lt;br /&gt;
 * @version 1.0&lt;br /&gt;
 */&lt;br /&gt;
public class Rennen&lt;br /&gt;
{&lt;br /&gt;
	private String name;&lt;br /&gt;
	private ArrayList&amp;lt;Rennschnecke&amp;gt; schnecken;&lt;br /&gt;
	private double renndistanz;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Konstruktor für Schneckenrennen&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 3) &lt;br /&gt;
	 * @param name Name des Schneckenrennens&lt;br /&gt;
	 * @param renndistanz distance off the race&lt;br /&gt;
	 */&lt;br /&gt;
	public Rennen(String name, double renndistanz)&lt;br /&gt;
	{&lt;br /&gt;
		this.name = name;&lt;br /&gt;
		//leere ArrayList von Schnecken&lt;br /&gt;
		this.schnecken = new ArrayList&amp;lt;Rennschnecke&amp;gt;();&lt;br /&gt;
		this.renndistanz = renndistanz;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fügt eine Schnecke dem Rennen hinzu.&amp;lt;br&amp;gt;&lt;br /&gt;
	 *(Punkt 4)&lt;br /&gt;
	 * @param schnecke eine zum Rennen hinzuzufügende Schnecke&lt;br /&gt;
	 * @throws IllegalArgumentException wenn versucht wird eine Schnecke mehrmals hinzuzufügen&lt;br /&gt;
	 */&lt;br /&gt;
	public void addRennschnecke(Rennschnecke schnecke)&lt;br /&gt;
	{&lt;br /&gt;
		//überprüfen, ob die Schnecke schon am Rennen teilnimmt (Doppelteilnahme verhindern)&lt;br /&gt;
		//(Zustazpunkt 1)&lt;br /&gt;
		if (this.schnecken.contains(schnecke))&lt;br /&gt;
		{&lt;br /&gt;
			//Exception werfen, wenn die Schnecke schon am Rennen teilnimmt&lt;br /&gt;
			throw new IllegalArgumentException(&amp;quot;This snail is alredy at this race!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		this.schnecken.add(schnecke);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Entfernt eine Schnecke aus dem Rennen.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (entfernt alle Schnecken, die den jeweiligen Namen haben)&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 5)&lt;br /&gt;
	 * @param name Name der zu entfernende(n) Schnecke(n)&lt;br /&gt;
	 */&lt;br /&gt;
	public void removeRennschnecke(String name)&lt;br /&gt;
	{&lt;br /&gt;
		Rennschnecke schnecke;&lt;br /&gt;
		//Iterator um die ArrayList zu durchlaufen&lt;br /&gt;
		Iterator&amp;lt;Rennschnecke&amp;gt; iter = this.schnecken.iterator();&lt;br /&gt;
&lt;br /&gt;
		//solange es noch Elemente in der ArrayList gibt...&lt;br /&gt;
		while (iter.hasNext())&lt;br /&gt;
		{&lt;br /&gt;
			//...sich den nächsten Eintrag nehmen...&lt;br /&gt;
			schnecke = iter.next();&lt;br /&gt;
			&lt;br /&gt;
			//...und überprüfen ob der Name mit dem zu entfernenden Namen übereinstimmt...&lt;br /&gt;
			if (schnecke.getName().equals(name))&lt;br /&gt;
			{&lt;br /&gt;
				//...wenn, dann diesen Eintrag aus der ArrayList entfernen&lt;br /&gt;
				iter.remove();&lt;br /&gt;
			}// if&lt;br /&gt;
		}// while&lt;br /&gt;
	}// removeSnail&lt;br /&gt;
&lt;br /&gt;
	public String toString()&lt;br /&gt;
	{&lt;br /&gt;
		//(Punkt 6)&lt;br /&gt;
		&lt;br /&gt;
		//StringBuilder ist Classe um Strings zu &amp;quot;bauen&amp;quot;&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
		&lt;br /&gt;
		//Metadaten des Rennens (Name, Teilnehmeranzahl, Distanz)&lt;br /&gt;
		sb.append(this.name + &amp;quot;(&amp;quot; + this.schnecken.size() + &amp;quot;) :&amp;quot; + this.renndistanz + &amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		//die gesamte ArrayList durchlaufen und alle Schnecke hinzufügen&lt;br /&gt;
		for (Rennschnecke snail : this.schnecken)&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(snail);&lt;br /&gt;
			sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
		}// for&lt;br /&gt;
&lt;br /&gt;
		//wenn es einen Gewinner gibt&lt;br /&gt;
		if (this.getGewinner() != null)&lt;br /&gt;
		{&lt;br /&gt;
			//...dann wird er hinzugefügt&lt;br /&gt;
			sb.append(&amp;quot;Gewinner:&amp;quot;);&lt;br /&gt;
			sb.append(this.getGewinner());&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			//..ansonsten nicht&lt;br /&gt;
			sb.append(&amp;quot;Rennen noch nicht gestartet!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		//den gebauten String in eine echte Zeichenkette konvertieren&lt;br /&gt;
		return sb.toString();&lt;br /&gt;
	}// toString&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Methode liefert auch einen String, welcher das Rennen repräsentiert,&lt;br /&gt;
	 * doch ist der Aufbau etwas übersichtlicher. (tabellarisch)&lt;br /&gt;
	 * @return String-Repräsentation des Schneckenrennens&lt;br /&gt;
	 */&lt;br /&gt;
	public String getPrintString()&lt;br /&gt;
	{&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
		sb.append(&amp;quot;Rennen: '&amp;quot;);&lt;br /&gt;
		sb.append(this.name);&lt;br /&gt;
		sb.append(&amp;quot;' Teilnehmer: &amp;quot;);&lt;br /&gt;
		sb.append(this.schnecken.size());&lt;br /&gt;
		sb.append(&amp;quot; Distanz: &amp;quot;);&lt;br /&gt;
		sb.append(this.renndistanz);&lt;br /&gt;
		sb.append(&amp;quot;\nSchnecken:\n&amp;quot;);&lt;br /&gt;
		sb.append(&amp;quot;+Name\t+Rasse\t+vMax\t+Strecke\n&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		for (Rennschnecke snail : this.schnecken)&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(snail.getName());&lt;br /&gt;
			sb.append(&amp;quot;\t&amp;quot;);//zwischen den einzelnen Atributen der Schnecken wird ein TabStop eingefügt&lt;br /&gt;
			sb.append(snail.getRasse());&lt;br /&gt;
			sb.append(&amp;quot;\t&amp;quot;);&lt;br /&gt;
			sb.append(snail.getVMax());&lt;br /&gt;
			sb.append(&amp;quot;\t&amp;quot;);&lt;br /&gt;
			sb.append(snail.getStrecke());&lt;br /&gt;
			sb.append(&amp;quot;\t\n&amp;quot;);&lt;br /&gt;
		}// for&lt;br /&gt;
		&lt;br /&gt;
		if (this.getGewinner() != null)&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(&amp;quot;Gewinner:&amp;quot;);&lt;br /&gt;
			sb.append(this.getGewinner());&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(&amp;quot;Rennen noch nicht gestartet!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		return sb.toString();&lt;br /&gt;
	}//getPrintString&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt das Rennen tabellarisch auf der Konsole aus.&lt;br /&gt;
	 */&lt;br /&gt;
	public void print()&lt;br /&gt;
	{&lt;br /&gt;
		System.out.println(getPrintString());&lt;br /&gt;
	}// print&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt den Gewinner des Rennens zurück.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Gibt &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; zurück, wenn das Rennen noch nciht beendet wurde.)&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 8)&lt;br /&gt;
	 * @return Gewinner des Rennens&lt;br /&gt;
	 */&lt;br /&gt;
	public Rennschnecke getGewinner()&lt;br /&gt;
	{&lt;br /&gt;
		Rennschnecke gewinner = null;//bis jetzt ist noch keiner bekannt...&lt;br /&gt;
		&lt;br /&gt;
		//durchlaufe alle Schnecken...&lt;br /&gt;
		for (Rennschnecke schnecke : this.schnecken)&lt;br /&gt;
		{&lt;br /&gt;
			//...überprüfe ob eine die Renndistanz zurückgelegt hat&lt;br /&gt;
			if (schnecke.getStrecke() &amp;gt; this.renndistanz)&lt;br /&gt;
			{&lt;br /&gt;
				//wenn bisher noch kein gewinner ermittelt wurde...&lt;br /&gt;
				if (gewinner == null)&lt;br /&gt;
				{&lt;br /&gt;
					//...dann ist die Schnecke der gewinner&lt;br /&gt;
					gewinner = schnecke;&lt;br /&gt;
				}&lt;br /&gt;
				else&lt;br /&gt;
				{&lt;br /&gt;
					//...andernfalls ist die Schnecke welche weiter ist der Gewinner&lt;br /&gt;
					//(Zusatzpunkt 3)&lt;br /&gt;
					if (schnecke.getStrecke() &amp;gt; gewinner.getStrecke())&lt;br /&gt;
					{&lt;br /&gt;
						gewinner = schnecke;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}// if&lt;br /&gt;
		}// for&lt;br /&gt;
&lt;br /&gt;
		return gewinner;&lt;br /&gt;
	}//getWinner&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt alle Schnecken zurück.&lt;br /&gt;
	 * @return alle Schnecken&lt;br /&gt;
	 */&lt;br /&gt;
	public ArrayList&amp;lt;Rennschnecke&amp;gt; getSchnecken()&lt;br /&gt;
	{&lt;br /&gt;
		return this.schnecken;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt den Namen des Rennens zurück&lt;br /&gt;
	 * @return Rennname&lt;br /&gt;
	 */&lt;br /&gt;
	public String getName()&lt;br /&gt;
	{&lt;br /&gt;
		return this.name;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Lässt alle Schnecken ein mal kriechen.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 9) &lt;br /&gt;
	 */&lt;br /&gt;
	public void lasseSchneckenKriechen()&lt;br /&gt;
	{&lt;br /&gt;
		for (Rennschnecke snail : this.schnecken)&lt;br /&gt;
		{&lt;br /&gt;
			snail.krieche();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Führt das Rennen durch&amp;lt;br&amp;gt;&lt;br /&gt;
	 * Bewegt alle Schnecken so lange, bis eine im Zeil ist.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 10)&lt;br /&gt;
	 */&lt;br /&gt;
	public void durchfuehren()&lt;br /&gt;
	{&lt;br /&gt;
		System.out.println(&amp;quot;Rennen '&amp;quot; + this.name + &amp;quot;' wird durchgeführt...&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		//so lange es keinen Gewinner gibt...&lt;br /&gt;
		while (this.getGewinner() == null)&lt;br /&gt;
		{&lt;br /&gt;
			//...alle Schnecken ein mal kriechen lassen.&lt;br /&gt;
			this.lasseSchneckenKriechen();&lt;br /&gt;
		}// while&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Maim-Methode (nur zum Testen)&lt;br /&gt;
	 * @param args (keine)&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args)&lt;br /&gt;
	{&lt;br /&gt;
		Rennen testRennen = new Rennen(&amp;quot;Test&amp;quot;, 100000);&lt;br /&gt;
&lt;br /&gt;
		testRennen.addRennschnecke(new Rennschnecke(&amp;quot;andre&amp;quot;, &amp;quot;human&amp;quot;, 100));&lt;br /&gt;
		testRennen.addRennschnecke(new Rennschnecke(&amp;quot;klaus&amp;quot;, &amp;quot;human&amp;quot;, 90));&lt;br /&gt;
		testRennen.addRennschnecke(new Rennschnecke(&amp;quot;hans&amp;quot;, &amp;quot;human&amp;quot;, 75));&lt;br /&gt;
&lt;br /&gt;
		System.out.println(testRennen);&lt;br /&gt;
		&lt;br /&gt;
		testRennen.durchfuehren();&lt;br /&gt;
		System.out.println(testRennen);&lt;br /&gt;
	}&lt;br /&gt;
}// class Rennen&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wettbuero.java ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
package Schneckenrennen;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Wettbüro (einfache Version)&lt;br /&gt;
 * @author André Schulz&lt;br /&gt;
 * @version 1.0&lt;br /&gt;
 */&lt;br /&gt;
public class Wettbuero&lt;br /&gt;
{&lt;br /&gt;
	private Rennen rennen;&lt;br /&gt;
	private ArrayList&amp;lt;Wette&amp;gt; wetten;&lt;br /&gt;
	private double faktor;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Konstruktor für ein Wettbüro.&lt;br /&gt;
	 * @param rennen das Rennen, welches dieses Wettbüro betreuen soll&lt;br /&gt;
	 * @param faktor der Faktor, welcher bei gewinnen ausgezahlt wird&lt;br /&gt;
	 * @throws IllegalArgumentException wenn versucht wird einen negativen Wetteinsatz zu verwenden&lt;br /&gt;
	 */&lt;br /&gt;
	public Wettbuero(Rennen rennen, double faktor)&lt;br /&gt;
	{&lt;br /&gt;
		// wenn der Wetteinsatz negativ sein soll =&amp;gt; Fehler&lt;br /&gt;
		// (Zusatzpunkt 2)&lt;br /&gt;
		if (faktor &amp;lt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			throw new IllegalArgumentException(&amp;quot;Es dürfen keine Negativen Wetten abgeschlossen werden!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		this.rennen = rennen;&lt;br /&gt;
		this.faktor = faktor;&lt;br /&gt;
		this.wetten = new ArrayList&amp;lt;Wette&amp;gt;();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fügt eine Wette hinzu.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 2)&lt;br /&gt;
	 * @param schneckenname Name der Schnecke auf die gesetzt wird&lt;br /&gt;
	 * @param wetteinsatz der Wetteinsatz&lt;br /&gt;
	 * @param spielername Name des Spielers, welche doe Wette tätigt&lt;br /&gt;
	 */&lt;br /&gt;
	public void wetteAnnehmen(String schneckenname, double wetteinsatz, String spielername)&lt;br /&gt;
	{&lt;br /&gt;
		wetten.add(new Wette(schneckenname, wetteinsatz, spielername));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Führt das Rennen durch.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 3)&lt;br /&gt;
	 */&lt;br /&gt;
	public void rennenDurchfuehren()&lt;br /&gt;
	{&lt;br /&gt;
		this.rennen.durchfuehren();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public String toString()&lt;br /&gt;
	{&lt;br /&gt;
		// (Punkt 4)&lt;br /&gt;
&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
		// zu erst das Rennen ausgeben&lt;br /&gt;
		sb.append(&amp;quot;Renen:\n&amp;quot;);&lt;br /&gt;
		sb.append(this.rennen);&lt;br /&gt;
		sb.append(&amp;quot;Wetten:\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		// dann Wetten ausgeben, wenn vorhanden&lt;br /&gt;
		if (wetten.size() &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			for (Wette wette : this.wetten)&lt;br /&gt;
			{&lt;br /&gt;
				sb.append(wette);&lt;br /&gt;
				sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
			}// for&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(&amp;quot;(keine)&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return sb.toString();&lt;br /&gt;
	}// toString&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt das Wettbüro, mit dem dazugehörigen Rennen aus.&lt;br /&gt;
	 */&lt;br /&gt;
	public void print()&lt;br /&gt;
	{&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
		sb.append(&amp;quot;Wettbüro für:\n&amp;quot;);&lt;br /&gt;
		sb.append(this.rennen.getPrintString());&lt;br /&gt;
		sb.append(&amp;quot;Wetten:\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		if (wetten.size() &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			for (Wette bet : this.wetten)&lt;br /&gt;
			{&lt;br /&gt;
				sb.append(bet);&lt;br /&gt;
				sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
			}// for&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(&amp;quot;(keine)&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		System.out.println(sb.toString());&lt;br /&gt;
	}// print&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Main-Methode (nur zum Testen)&lt;br /&gt;
	 * @param args (keine)&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args)&lt;br /&gt;
	{&lt;br /&gt;
		Rennen rennen = new Rennen(&amp;quot;testRace&amp;quot;, 100000);&lt;br /&gt;
&lt;br /&gt;
		rennen.addRennschnecke(new Rennschnecke(&amp;quot;andre&amp;quot;, &amp;quot;human&amp;quot;, 100));&lt;br /&gt;
		rennen.addRennschnecke(new Rennschnecke(&amp;quot;klaus&amp;quot;, &amp;quot;human&amp;quot;, 90));&lt;br /&gt;
		rennen.addRennschnecke(new Rennschnecke(&amp;quot;hans&amp;quot;, &amp;quot;human&amp;quot;, 75));&lt;br /&gt;
&lt;br /&gt;
		Wettbuero wettbuero = new Wettbuero(rennen, 1.5);&lt;br /&gt;
&lt;br /&gt;
		// TODO Wetten hinzufügen&lt;br /&gt;
&lt;br /&gt;
		wettbuero.print();&lt;br /&gt;
&lt;br /&gt;
		wettbuero.rennenDurchfuehren();&lt;br /&gt;
&lt;br /&gt;
		wettbuero.print();&lt;br /&gt;
&lt;br /&gt;
	}// main&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Wette.&lt;br /&gt;
	 * @author André Schulz&lt;br /&gt;
	 * @version 1.0&lt;br /&gt;
	 */&lt;br /&gt;
	private class Wette&lt;br /&gt;
	{&lt;br /&gt;
		private String spielerName;&lt;br /&gt;
		private String schneckenName;&lt;br /&gt;
		private double wetteinsatz;&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Konstruktor erstellt eine neue Wette.&lt;br /&gt;
		 * @param schneckenName Name der Schnecke auf die gesetzt werden soll.&lt;br /&gt;
		 * @param wetteinsatz der Wetteinsatz für die Wette&lt;br /&gt;
		 * @param spielerName der Name des Spielers&lt;br /&gt;
		 */&lt;br /&gt;
		public Wette(String schneckenName, double wetteinsatz, String spielerName)&lt;br /&gt;
		{&lt;br /&gt;
			if (wetteinsatz &amp;lt; 0)&lt;br /&gt;
			{&lt;br /&gt;
				throw new IllegalArgumentException(&amp;quot;betAmount must be &amp;gt;=0!&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			this.spielerName = spielerName;&lt;br /&gt;
			this.schneckenName = schneckenName;&lt;br /&gt;
			this.wetteinsatz = wetteinsatz;&lt;br /&gt;
		}// Wette&lt;br /&gt;
&lt;br /&gt;
		public String toString()&lt;br /&gt;
		{&lt;br /&gt;
			return this.spielerName + &amp;quot;:&amp;quot; + this.wetteinsatz + &amp;quot;@&amp;quot; + this.schneckenName;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Gibt den Namen des Spielers dieser Wette zurück.&lt;br /&gt;
		 * @return Name des Spielers&lt;br /&gt;
		 */&lt;br /&gt;
		public String getSpielername()&lt;br /&gt;
		{&lt;br /&gt;
			return spielerName;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Gibt den Namen der Schnecke zurück, auf die gesetzt wurde.&lt;br /&gt;
		 * @return Name der Schnecke&lt;br /&gt;
		 */&lt;br /&gt;
		public String getSchneckenname()&lt;br /&gt;
		{&lt;br /&gt;
			return schneckenName;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Gibt den Wetteinsatz zurück.&lt;br /&gt;
		 * @return Wetteinsatz&lt;br /&gt;
		 */&lt;br /&gt;
		public double getWetteinsatz()&lt;br /&gt;
		{&lt;br /&gt;
			return wetteinsatz;&lt;br /&gt;
		}&lt;br /&gt;
	}// class Wette&lt;br /&gt;
}// class Wettbuero&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Wettbuero_2.java (verbesserte Version) ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
package Schneckenrennen;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Collections;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Wettbüro (verbesserte Version)&lt;br /&gt;
 * @author André Schulz&lt;br /&gt;
 * @version 2.0&lt;br /&gt;
 */&lt;br /&gt;
public class Wettbuero_2&lt;br /&gt;
{&lt;br /&gt;
	private Rennen rennen;&lt;br /&gt;
	private ArrayList&amp;lt;Spieler&amp;gt; spieler;&lt;br /&gt;
	private ArrayList&amp;lt;Wette&amp;gt; wetten;&lt;br /&gt;
	private double faktor;&lt;br /&gt;
	private Rennschnecke gewinner;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Konstruktor für ein Wettbüro.&lt;br /&gt;
	 * @param rennen das Rennen, welches dieses Wettbüro betreuen soll&lt;br /&gt;
	 * @param faktor der Faktor, welcher bei gewinnen ausgezahlt wird&lt;br /&gt;
	 * @throws IllegalArgumentException wenn versucht wird einen negativen Wetteinsatz zu verwenden&lt;br /&gt;
	 */&lt;br /&gt;
	public Wettbuero_2(Rennen rennen, double faktor)&lt;br /&gt;
	{&lt;br /&gt;
		// wenn der Wetteinsatz negativ sein sollte =&amp;gt; Fehler&lt;br /&gt;
		// (Zusatzpunkt 2)&lt;br /&gt;
		if (faktor &amp;lt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			throw new IllegalArgumentException(&amp;quot;Es dürfen keine Negativen Wetten abgeschlossen werden!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		this.rennen = rennen;&lt;br /&gt;
		this.faktor = faktor;&lt;br /&gt;
		this.spieler = new ArrayList&amp;lt;Spieler&amp;gt;();&lt;br /&gt;
		this.wetten = new ArrayList&amp;lt;Wette&amp;gt;();&lt;br /&gt;
	}// Wettbuero_2&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fügt dem Wettbüro einen neuen Spieler hinzu.&lt;br /&gt;
	 * @param spielerName der Name des Spielers&lt;br /&gt;
	 */&lt;br /&gt;
	public Spieler addSpieler(String spielerName)&lt;br /&gt;
	{&lt;br /&gt;
		// neunen Spieler erstellen&lt;br /&gt;
		Spieler spieler = new Spieler(spielerName);&lt;br /&gt;
&lt;br /&gt;
		// wenn der Spieler noch nicht vorhanden ist =&amp;gt; hinzufügen&lt;br /&gt;
		if (!this.spieler.contains(spieler))&lt;br /&gt;
		{&lt;br /&gt;
			this.spieler.add(spieler);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return spieler;&lt;br /&gt;
	}// addSpieler&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fügt eine Wette hinzu.&lt;br /&gt;
	 * @param schneckenName der Name der Schnecke, auf die gesetzt werden soll&lt;br /&gt;
	 * @param wetteinsatz der Wetteinsatz aud die Schnecke&lt;br /&gt;
	 * @param spielerName der Name des Spielers&lt;br /&gt;
	 */&lt;br /&gt;
	public void addWette(String schneckenName, double wetteinsatz, Spieler spieler)&lt;br /&gt;
	{&lt;br /&gt;
		for (Rennschnecke snail : this.rennen.getSchnecken())&lt;br /&gt;
		{&lt;br /&gt;
			if (snail.getName().equals(schneckenName))&lt;br /&gt;
			{&lt;br /&gt;
				wetten.add(new Wette(snail, wetteinsatz, spieler));&lt;br /&gt;
				return;&lt;br /&gt;
			}// if&lt;br /&gt;
		}// for&lt;br /&gt;
&lt;br /&gt;
		throw new IllegalArgumentException(&amp;quot;Eine Schnecke mit dem Namen '&amp;quot; + schneckenName + &amp;quot;' gibts in dem Rennen '&amp;quot; + this.rennen.getName() + &amp;quot; nicht!&amp;quot;);&lt;br /&gt;
	}// addWette&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Führt das Rennen durch.&lt;br /&gt;
	 */&lt;br /&gt;
	public void rennenDurchfuehren()&lt;br /&gt;
	{&lt;br /&gt;
		this.rennen.durchfuehren();&lt;br /&gt;
		this.gewinner = this.rennen.getGewinner();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public String toString()&lt;br /&gt;
	{&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
		sb.append(&amp;quot;Rennen:\n&amp;quot;);&lt;br /&gt;
		sb.append(this.rennen);&lt;br /&gt;
		sb.append(&amp;quot;Wetten:\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		if (wetten.size() &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			for (Wette bet : this.wetten)&lt;br /&gt;
			{&lt;br /&gt;
				sb.append(bet);&lt;br /&gt;
				sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
			}// for&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(&amp;quot;(keine)&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return sb.toString();&lt;br /&gt;
	}// toString&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Methode wertet alle Wetten aus.&lt;br /&gt;
	 */&lt;br /&gt;
	public void wettenAuswerten()&lt;br /&gt;
	{&lt;br /&gt;
		for (Wette wette : this.wetten)&lt;br /&gt;
		{&lt;br /&gt;
			wette.setzeGewinn(this.gewinner, this.faktor);&lt;br /&gt;
		}&lt;br /&gt;
	}// wettenAuswerten&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Main-Mthode zum Testen.&lt;br /&gt;
	 * @param args (none)&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args)&lt;br /&gt;
	{&lt;br /&gt;
		// rennen erstellen&lt;br /&gt;
		Rennen race = new Rennen(&amp;quot;Testrennen&amp;quot;, 100000);&lt;br /&gt;
&lt;br /&gt;
		// Schnecken hinzufügen&lt;br /&gt;
		race.addRennschnecke(new Rennschnecke(&amp;quot;andre&amp;quot;, &amp;quot;Mensch&amp;quot;, 100));&lt;br /&gt;
		race.addRennschnecke(new Rennschnecke(&amp;quot;klaus&amp;quot;, &amp;quot;Mensch&amp;quot;, 90));&lt;br /&gt;
		race.addRennschnecke(new Rennschnecke(&amp;quot;hans&amp;quot;, &amp;quot;Mensch&amp;quot;, 75));&lt;br /&gt;
&lt;br /&gt;
		// Wettbüro erstellen&lt;br /&gt;
		Wettbuero_2 wettbuero = new Wettbuero_2(race, 1.5);&lt;br /&gt;
&lt;br /&gt;
		// Spieler erstellen&lt;br /&gt;
		Spieler spielerAndre = wettbuero.addSpieler(&amp;quot;andre&amp;quot;);&lt;br /&gt;
		Spieler spielerHans = wettbuero.addSpieler(&amp;quot;hans&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		// wetten setzen&lt;br /&gt;
		wettbuero.addWette(&amp;quot;andre&amp;quot;, 100, spielerAndre);&lt;br /&gt;
		wettbuero.addWette(&amp;quot;hans&amp;quot;, 100, spielerHans);&lt;br /&gt;
		wettbuero.addWette(&amp;quot;andre&amp;quot;, 10, spielerHans);&lt;br /&gt;
&lt;br /&gt;
		// Wettbüro ausgeben (vor dem Lauf)&lt;br /&gt;
		System.out.println(wettbuero);&lt;br /&gt;
&lt;br /&gt;
		// Rennen durchführen udn auswerten&lt;br /&gt;
		wettbuero.rennenDurchfuehren();&lt;br /&gt;
		wettbuero.wettenAuswerten();&lt;br /&gt;
&lt;br /&gt;
		// Wettbüro ausgeben (nach dem Lauf)&lt;br /&gt;
		System.out.println(wettbuero);&lt;br /&gt;
&lt;br /&gt;
		// zeigt die einzelnen Spieler&lt;br /&gt;
		System.out.println(&amp;quot;Spielerübersicht:&amp;quot;);&lt;br /&gt;
		wettbuero.zeigeSpieler();&lt;br /&gt;
	}// main&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Methode gibt alle Spieler mit ihren jeweiligen Wetten übersichtlich aus.&lt;br /&gt;
	 */&lt;br /&gt;
	public void zeigeSpieler()&lt;br /&gt;
	{&lt;br /&gt;
		// sortieren aller Wetten (nach Spielername)&lt;br /&gt;
		Collections.sort(this.wetten);&lt;br /&gt;
&lt;br /&gt;
		String oldSpielerName = &amp;quot;&amp;quot;;&lt;br /&gt;
		double wetteinsatz = 0;// Gesamtwetteinsatz eines Spielers&lt;br /&gt;
		double wettgewinn = 0;// Gesamtwettgewinn eines Spielers&lt;br /&gt;
&lt;br /&gt;
		System.out.println(&amp;quot;Spieler\tSchnecke\tEinsatz\tGewinn\tSaldo&amp;quot;);&lt;br /&gt;
		System.out.println(&amp;quot;================================================&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		for (Wette wette : this.wetten)&lt;br /&gt;
		{&lt;br /&gt;
			if (wette.spieler.name == oldSpielerName)&lt;br /&gt;
			{&lt;br /&gt;
				System.out.println(&amp;quot;\t&amp;quot; + wette.schnecke.getRasse() + &amp;quot;.&amp;quot; + wette.schnecke.getName() + &amp;quot;\t&amp;quot; + wette.wetteinsatz + &amp;quot;\t&amp;quot; + wette.wettgewinn + &amp;quot;\t&amp;quot; + (wette.wettgewinn - wette.wetteinsatz));&lt;br /&gt;
&lt;br /&gt;
				wetteinsatz += wette.wetteinsatz;&lt;br /&gt;
				wettgewinn += wette.wettgewinn;&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				if (oldSpielerName != &amp;quot;&amp;quot;)&lt;br /&gt;
				{&lt;br /&gt;
					System.out.println(&amp;quot;\t\t\t------------------------&amp;quot;);&lt;br /&gt;
					System.out.println(&amp;quot;\t\t\t&amp;quot; + wetteinsatz + &amp;quot;\t&amp;quot; + wettgewinn + &amp;quot;\t&amp;quot; + (wettgewinn - wetteinsatz));&lt;br /&gt;
				}// if&lt;br /&gt;
&lt;br /&gt;
				System.out.println(wette.spieler.name);&lt;br /&gt;
				System.out.println(&amp;quot;\t&amp;quot; + wette.schnecke.getRasse() + &amp;quot;.&amp;quot; + wette.schnecke.getName() + &amp;quot;\t&amp;quot; + wette.wetteinsatz + &amp;quot;\t&amp;quot; + wette.wettgewinn + &amp;quot;\t&amp;quot; + (wette.wettgewinn - wette.wetteinsatz));&lt;br /&gt;
&lt;br /&gt;
				oldSpielerName = wette.spieler.name;&lt;br /&gt;
				wetteinsatz = wette.wetteinsatz;&lt;br /&gt;
				wettgewinn = wette.wettgewinn;&lt;br /&gt;
			}// else&lt;br /&gt;
		}// for&lt;br /&gt;
&lt;br /&gt;
		if (oldSpielerName != &amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			System.out.println(&amp;quot;\t\t\t------------------------&amp;quot;);&lt;br /&gt;
			System.out.println(&amp;quot;\t\t\t&amp;quot; + wetteinsatz + &amp;quot;\t&amp;quot; + wettgewinn + &amp;quot;\t&amp;quot; + (wettgewinn - wetteinsatz));&lt;br /&gt;
		}// if&lt;br /&gt;
	}// zeigeSpieler&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Eine Wette.&lt;br /&gt;
	 */&lt;br /&gt;
	private class Wette implements Comparable&amp;lt;Wette&amp;gt;&lt;br /&gt;
	{&lt;br /&gt;
		private Spieler spieler;&lt;br /&gt;
		private Rennschnecke schnecke;&lt;br /&gt;
		private double wetteinsatz;&lt;br /&gt;
		private double wettgewinn;&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Konstruktor für wetten.&lt;br /&gt;
		 * @param schnecke die Schnecke&lt;br /&gt;
		 * @param wetteinsatz der Wetteinsatz&lt;br /&gt;
		 * @param spieler der Spieler der wettet&lt;br /&gt;
		 */&lt;br /&gt;
		public Wette(Rennschnecke schnecke, double wetteinsatz, Spieler spieler)&lt;br /&gt;
		{&lt;br /&gt;
			if (wetteinsatz &amp;lt; 0)&lt;br /&gt;
			{&lt;br /&gt;
				throw new IllegalArgumentException(&amp;quot;Wetteinsatz muss &amp;gt;=0 sein!&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			this.spieler = spieler;&lt;br /&gt;
			this.schnecke = schnecke;&lt;br /&gt;
			this.wetteinsatz = wetteinsatz;&lt;br /&gt;
			this.wettgewinn = -1;&lt;br /&gt;
		}// Wette&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Methode setzt in Abhängigkeit vom Gewinner den Wettgewinn.&lt;br /&gt;
		 * @param gewinner die Schnecke, welce das Rennen gewonnen hat&lt;br /&gt;
		 * @param faktor der Gewinnfaktor&lt;br /&gt;
		 */&lt;br /&gt;
		public void setzeGewinn(Rennschnecke gewinner, double faktor)&lt;br /&gt;
		{&lt;br /&gt;
			if (this.schnecke.equals(gewinner))&lt;br /&gt;
			{&lt;br /&gt;
				// auf Gewinner gesetzt =&amp;gt; Wettgewinn setzen&lt;br /&gt;
				this.wettgewinn = this.wetteinsatz * faktor;&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				// auf andere Schnecke gesetzt =&amp;gt; kein Gewinn&lt;br /&gt;
				this.wettgewinn = 0;&lt;br /&gt;
			}&lt;br /&gt;
		}// setzeGewinn&lt;br /&gt;
&lt;br /&gt;
		public String toString()&lt;br /&gt;
		{&lt;br /&gt;
			StringBuilder sb = new StringBuilder();&lt;br /&gt;
			sb.append(this.spieler);&lt;br /&gt;
			sb.append(&amp;quot;:&amp;quot;);&lt;br /&gt;
			sb.append(this.wetteinsatz);&lt;br /&gt;
			sb.append(&amp;quot;@&amp;quot;);&lt;br /&gt;
			sb.append(this.schnecke);&lt;br /&gt;
&lt;br /&gt;
			if (this.wettgewinn != -1)&lt;br /&gt;
			{&lt;br /&gt;
				sb.append(&amp;quot;-&amp;gt;&amp;quot;);&lt;br /&gt;
				sb.append(this.wettgewinn);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			return sb.toString();&lt;br /&gt;
		}// toString&lt;br /&gt;
&lt;br /&gt;
		@Override&lt;br /&gt;
		public int compareTo(Wette other)&lt;br /&gt;
		{&lt;br /&gt;
			return this.spieler.name.compareTo(other.spieler.name);&lt;br /&gt;
		}&lt;br /&gt;
	}// class Bet&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Ein Spieler welcher Wetten tätigt.&lt;br /&gt;
	 * @author André Schulz&lt;br /&gt;
	 * @version 1.0&lt;br /&gt;
	 */&lt;br /&gt;
	public class Spieler&lt;br /&gt;
	{&lt;br /&gt;
		private String name;&lt;br /&gt;
&lt;br /&gt;
		public Spieler(String name)&lt;br /&gt;
		{&lt;br /&gt;
			this.name = name;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		public String getName()&lt;br /&gt;
		{&lt;br /&gt;
			return this.name;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		public String toString()&lt;br /&gt;
		{&lt;br /&gt;
			return name;&lt;br /&gt;
		}&lt;br /&gt;
	}// calss Spieler&lt;br /&gt;
}// class Wettbuero_2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Rennschnecke&amp;diff=13710</id>
		<title>Javakurs/Übungsaufgaben/Rennschnecke</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Rennschnecke&amp;diff=13710"/>
		<updated>2010-03-25T10:28:33Z</updated>

		<summary type="html">&lt;p&gt;Andre: /* Rennen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Rennschnecke ==&lt;br /&gt;
#Erstelle eine Klasse &amp;quot;Rennschnecke&amp;quot;&lt;br /&gt;
#:&lt;br /&gt;
#Rennschnecken sollen folgende Eigenschaften(Objektvariablen) besitzen:&lt;br /&gt;
#* einen Namen&lt;br /&gt;
#* eine Rasse&lt;br /&gt;
#* eine Maximalgeschwindigkeit (Veränderung der Strecke pro Schritt)&lt;br /&gt;
#* die Schnecke soll wissen welchen Weg sie bereits zurück gelegt hat&lt;br /&gt;
#:&lt;br /&gt;
# Erstelle für die Klasse Rennschnecke einen [[Javakurs2006/Java_Kurzreferenz#Konstruktor|Konstruktor]], der den Instanzvariablen beim Erstellen einer neuen Instanz (Objekt zu dieser Klasse) Werte zuweist.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennschnecke&amp;quot; eine Methode &amp;quot;krieche()&amp;quot; an, welche die Schnecke abhängig von ihrer Maximalgeschwindigkeit eine zufällige Strecke weiter bewegt. Soll heißen: Sie kriecht eine zufällige Strecke größer null und kleiner ihrer Maximalgeschwindigkeit. Nimm als Zeiteinheit 1 an.&lt;br /&gt;
#* Tipp: Schaut euch die Methode Math.random() aus der Java API an.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennschnecke&amp;quot; eine Methode &amp;quot;public String toString()&amp;quot; an, welche die Daten der Schnecke mit return als String zurückgibt.&lt;br /&gt;
#:&lt;br /&gt;
# Teste deine Klasse, indem du probehalber ein Rennschneckenobjekt erzeugst und seine Daten auf der Konsole ausgibst. &lt;br /&gt;
#*Tipp:Verwende zum Ausgeben der Daten die toString() Methode der Rennschnecke.&lt;br /&gt;
#:&lt;br /&gt;
#:&lt;br /&gt;
&lt;br /&gt;
== Rennen ==&lt;br /&gt;
&lt;br /&gt;
#Erstelle eine Klasse &amp;quot;Rennen&amp;quot;&lt;br /&gt;
#:&lt;br /&gt;
#Ein Rennen hat folgende Eigenschaften:&lt;br /&gt;
#*einen Namen&lt;br /&gt;
#*die Anzahl der teilnehmenden Schnecken&lt;br /&gt;
#*die teilnemenden Schnecken selbst, als:&lt;br /&gt;
#** Array: einfachere Umsetzung mit konstanter Teilnehmerzahl&lt;br /&gt;
#** [[Javakurs2007/ArrayList|ArrayList]]: schönere Umsetzung mit variabler Teilnehmerzahl&lt;br /&gt;
#*die Länge der zu kriechenden Strecke&lt;br /&gt;
#:&lt;br /&gt;
#Überlege dir, welche dieser Werte bereits im Konstruktor gesetzt werden sollten.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;void addRennschnecke(Rennschnecke neueSchnecke)&amp;quot; an, welche dem Rennen eine Schnecke hinzufügt.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;void removeRennschnecke(String name)&amp;quot; an, welche eine Schnecke aus dem Rennen entfernt. (nicht so einfach und kann erstmal übersprungen werden)&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;public String toString()&amp;quot; an, welche die Daten des Rennens mit return als String zurückgibt. &lt;br /&gt;
#*Tipp: Um die Daten der beteiligten Schnecken zurückzugeben, könnt ihr deren toString() Funktion benutzen.&lt;br /&gt;
#:&lt;br /&gt;
#Teste deine Klasse vom Hauptprogramm aus!&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;Rennschnecke ermittleGewinner()&amp;quot; an, welche '''null''' zurückliefert, wenn noch keine der teilnemenden Schnecken das Ziel erreicht hat und anderenfalls die Gewinnerschnecke zurückgibt.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;void lasseSchneckenKriechen()&amp;quot; an, welche alle teilnemenden Schnecken einmal kriechen lässt.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;void durchfuehren()&amp;quot; an, welche so lange lasseSchneckenKriechen() aufruft, bis eine der Schnecken das Ziel erreicht hat.&lt;br /&gt;
#* Tipp: Ob eine Schnecke im Ziel angekommen ist, kannst du mit deiner Methode ermittleGewinner() herrausfinden.&lt;br /&gt;
&lt;br /&gt;
== Wettbüro ==&lt;br /&gt;
&lt;br /&gt;
#Erstelle eine Klasse Wettbuero.&lt;br /&gt;
#:&lt;br /&gt;
#:Ein Wettbuero hat die folgenden Eigenschaften:&lt;br /&gt;
#* Es weiß, für welches Rennen es seine Wetten entgegennimmt.&lt;br /&gt;
#* Es verfügt über eine Liste (z.B. eine ArrayList) von angenommenen Wetten.&lt;br /&gt;
#* Es hat einen festen Faktor, mit welchem Wetteinsätze bei einem Gewinn multipliziert werden.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Wettbuero&amp;quot; eine Methode &amp;quot;wetteAnnehmen(String schneckenName, int wettEinsatz, String spieler)&amp;quot; an, welche eine Wette entgegennimmt. Die Wette ist bezogen auf eine Schnecke für das Rennen, das von dem Büro bearbeitet wird.&lt;br /&gt;
#* Um die einzelnen Wetten speichern zu können, sollten ihre Daten in eigenen Objekten der Klasse &amp;quot;Wette&amp;quot; gespeichert werden. Erstellt euch diese Klasse selbst. &lt;br /&gt;
#* Tipp: Denkt an toString().&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Wettbuero&amp;quot; eine Methode &amp;quot;rennenDurchfuehren()&amp;quot; an, welche das betreute Rennen durchfuert.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Wettbuero&amp;quot; eine Methode &amp;quot;toString()&amp;quot; an, welche die Daten des Wettbueros, die Daten des Rennens sowie sämtliche abgeschlossende Wetten als String zurückgibt.&lt;br /&gt;
#:&lt;br /&gt;
# Teste dein Programm!&lt;br /&gt;
#:&lt;br /&gt;
# Tausche die Klasse Rennen mit einem Kommilitonen, der ebenfalls bereits fertig ist.&lt;br /&gt;
#* Sollten eure Programme immer noch laufen?&lt;br /&gt;
#* Treten Fehler auf? Wenn ja: ändert eure Programme so ab, dass ihr problemlos Klassen austauschen könnt.&lt;br /&gt;
&lt;br /&gt;
== Zusatz ==&lt;br /&gt;
&lt;br /&gt;
Es gibt noch ein paar Dinge, die in unserem Wettbüro nicht so laufen wie sie sollten. &lt;br /&gt;
Macht sie besser.&lt;br /&gt;
&lt;br /&gt;
* Dieselbe Schnecke kann in ein Rennen zweimal eingetragen werden.&lt;br /&gt;
* Es können negative Wetten abgeschlossen werden.&lt;br /&gt;
* Gehen zwei Schnecken gleichzeitig durchs Ziel, wird die Schnecke ausgegeben, auf die die Suche nach dem Gewinner zuerst stößt. Das ist ganz schön ungerecht.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Zusatz Vererbung ==&lt;br /&gt;
&lt;br /&gt;
* Wo Geld im Spiel ist wird auch betrogen. Aus diesem Grund wollen wir jezt auch gedopte Rennschnecken an unseren Rennen teilnehmen lassen. &lt;br /&gt;
** Erstelle eine Klasse &amp;quot;Dopingschnecke&amp;quot;, welche alle Attribute und Methoden der gemeinen &amp;quot;Rennschnecke&amp;quot; erbt.&lt;br /&gt;
** Überschreibe den geerbten Constructor, so das &amp;quot;Dopingschnecken&amp;quot; eine wesentlich höhere Maximalgeschwindigkeit erhalten als normale &amp;quot;Rennschnecken&amp;quot;.&lt;br /&gt;
** Überschreibe die geerbte Methode &amp;quot;String toString()&amp;quot; so dass Dopingschnecken anders ausgegeben werden als Rennschnecken (z.B. durch einen zusatz wie &amp;quot;rote Augen&amp;quot; oder ähnliches)&lt;br /&gt;
** Mische in einem Rennen Dopingschnecken unter deine Rennschnecken. Du musst dafür keinerlei Funktionalitäten änder. Dein Programm muss nicht wissen ob es sich um eine Dopingschnecke handelt, denn sie ist ja auch eine Rennschnecke.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kommentare ==&lt;br /&gt;
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf &amp;quot;bearbeiten&amp;quot; und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit &amp;quot;Vorschau zeigen&amp;quot; kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.&lt;br /&gt;
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)&lt;br /&gt;
&lt;br /&gt;
==== Robert ====&lt;br /&gt;
Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Felix S. ====&lt;br /&gt;
&amp;quot;abhängig von ihrer Maximalgeschwindigkeit&amp;quot; verwirrte mehrmals Teilnehmer. Mathematischen Bezug/Verfahren hinschreiben bzw. erst mal auf das Kriechen konzentrieren.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java]]&lt;br /&gt;
[[Kategorie:Java_Aufgaben]]&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Rennschnecke&amp;diff=13709</id>
		<title>Javakurs/Übungsaufgaben/Rennschnecke</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Rennschnecke&amp;diff=13709"/>
		<updated>2010-03-25T10:26:18Z</updated>

		<summary type="html">&lt;p&gt;Andre: /* Rennschnecke */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Rennschnecke ==&lt;br /&gt;
#Erstelle eine Klasse &amp;quot;Rennschnecke&amp;quot;&lt;br /&gt;
#:&lt;br /&gt;
#Rennschnecken sollen folgende Eigenschaften(Objektvariablen) besitzen:&lt;br /&gt;
#* einen Namen&lt;br /&gt;
#* eine Rasse&lt;br /&gt;
#* eine Maximalgeschwindigkeit (Veränderung der Strecke pro Schritt)&lt;br /&gt;
#* die Schnecke soll wissen welchen Weg sie bereits zurück gelegt hat&lt;br /&gt;
#:&lt;br /&gt;
# Erstelle für die Klasse Rennschnecke einen [[Javakurs2006/Java_Kurzreferenz#Konstruktor|Konstruktor]], der den Instanzvariablen beim Erstellen einer neuen Instanz (Objekt zu dieser Klasse) Werte zuweist.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennschnecke&amp;quot; eine Methode &amp;quot;krieche()&amp;quot; an, welche die Schnecke abhängig von ihrer Maximalgeschwindigkeit eine zufällige Strecke weiter bewegt. Soll heißen: Sie kriecht eine zufällige Strecke größer null und kleiner ihrer Maximalgeschwindigkeit. Nimm als Zeiteinheit 1 an.&lt;br /&gt;
#* Tipp: Schaut euch die Methode Math.random() aus der Java API an.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennschnecke&amp;quot; eine Methode &amp;quot;public String toString()&amp;quot; an, welche die Daten der Schnecke mit return als String zurückgibt.&lt;br /&gt;
#:&lt;br /&gt;
# Teste deine Klasse, indem du probehalber ein Rennschneckenobjekt erzeugst und seine Daten auf der Konsole ausgibst. &lt;br /&gt;
#*Tipp:Verwende zum Ausgeben der Daten die toString() Methode der Rennschnecke.&lt;br /&gt;
#:&lt;br /&gt;
#:&lt;br /&gt;
&lt;br /&gt;
== Rennen ==&lt;br /&gt;
&lt;br /&gt;
#Erstelle eine Klasse &amp;quot;Rennen&amp;quot;&lt;br /&gt;
#:&lt;br /&gt;
#Ein Rennen hat folgende Eigenschaften:&lt;br /&gt;
#*einen Namen&lt;br /&gt;
#*die Anzahl der teilnehmenden Schnecken&lt;br /&gt;
#*die teilnemenden Schnecken selbst (z.B. in einer [[Javakurs2007/ArrayList|ArrayList]])&lt;br /&gt;
#*die Länge der zu kriechenden Strecke&lt;br /&gt;
#:&lt;br /&gt;
#Überlege dir, welche dieser Werte bereits im Konstruktor gesetzt werden sollten.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;void addRennschnecke(Rennschnecke neueSchnecke)&amp;quot; an, welche dem Rennen eine Schnecke hinzufügt.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;void removeRennschnecke(String name)&amp;quot; an, welche eine Schnecke aus dem Rennen entfernt.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;public String toString()&amp;quot; an, welche die Daten des Rennens mit return als String zurückgibt. &lt;br /&gt;
#*Tipp: Um die Daten der beteiligten Schnecken zurückzugeben, könnt ihr deren toString() Funktion benutzen.&lt;br /&gt;
#:&lt;br /&gt;
#Teste deine Klasse vom Hauptprogramm aus!&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;Rennschnecke ermittleGewinner()&amp;quot; an, welche '''null''' zurückliefert, wenn noch keine der teilnemenden Schnecken das Ziel erreicht hat und anderenfalls die Gewinnerschnecke zurückgibt.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;void lasseSchneckenKriechen()&amp;quot; an, welche alle teilnemenden Schnecken einmal kriechen lässt.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Rennen&amp;quot; eine Methode &amp;quot;void durchfuehren()&amp;quot; an, welche so lange lasseSchneckenKriechen() aufruft, bis eine der Schnecken das Ziel erreicht hat.&lt;br /&gt;
#* Tipp: Ob eine Schnecke im Ziel angekommen ist, kannst du mit deiner Methode ermittleGewinner() herrausfinden.&lt;br /&gt;
&lt;br /&gt;
== Wettbüro ==&lt;br /&gt;
&lt;br /&gt;
#Erstelle eine Klasse Wettbuero.&lt;br /&gt;
#:&lt;br /&gt;
#:Ein Wettbuero hat die folgenden Eigenschaften:&lt;br /&gt;
#* Es weiß, für welches Rennen es seine Wetten entgegennimmt.&lt;br /&gt;
#* Es verfügt über eine Liste (z.B. eine ArrayList) von angenommenen Wetten.&lt;br /&gt;
#* Es hat einen festen Faktor, mit welchem Wetteinsätze bei einem Gewinn multipliziert werden.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Wettbuero&amp;quot; eine Methode &amp;quot;wetteAnnehmen(String schneckenName, int wettEinsatz, String spieler)&amp;quot; an, welche eine Wette entgegennimmt. Die Wette ist bezogen auf eine Schnecke für das Rennen, das von dem Büro bearbeitet wird.&lt;br /&gt;
#* Um die einzelnen Wetten speichern zu können, sollten ihre Daten in eigenen Objekten der Klasse &amp;quot;Wette&amp;quot; gespeichert werden. Erstellt euch diese Klasse selbst. &lt;br /&gt;
#* Tipp: Denkt an toString().&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Wettbuero&amp;quot; eine Methode &amp;quot;rennenDurchfuehren()&amp;quot; an, welche das betreute Rennen durchfuert.&lt;br /&gt;
#:&lt;br /&gt;
#Lege in der Klasse &amp;quot;Wettbuero&amp;quot; eine Methode &amp;quot;toString()&amp;quot; an, welche die Daten des Wettbueros, die Daten des Rennens sowie sämtliche abgeschlossende Wetten als String zurückgibt.&lt;br /&gt;
#:&lt;br /&gt;
# Teste dein Programm!&lt;br /&gt;
#:&lt;br /&gt;
# Tausche die Klasse Rennen mit einem Kommilitonen, der ebenfalls bereits fertig ist.&lt;br /&gt;
#* Sollten eure Programme immer noch laufen?&lt;br /&gt;
#* Treten Fehler auf? Wenn ja: ändert eure Programme so ab, dass ihr problemlos Klassen austauschen könnt.&lt;br /&gt;
&lt;br /&gt;
== Zusatz ==&lt;br /&gt;
&lt;br /&gt;
Es gibt noch ein paar Dinge, die in unserem Wettbüro nicht so laufen wie sie sollten. &lt;br /&gt;
Macht sie besser.&lt;br /&gt;
&lt;br /&gt;
* Dieselbe Schnecke kann in ein Rennen zweimal eingetragen werden.&lt;br /&gt;
* Es können negative Wetten abgeschlossen werden.&lt;br /&gt;
* Gehen zwei Schnecken gleichzeitig durchs Ziel, wird die Schnecke ausgegeben, auf die die Suche nach dem Gewinner zuerst stößt. Das ist ganz schön ungerecht.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Zusatz Vererbung ==&lt;br /&gt;
&lt;br /&gt;
* Wo Geld im Spiel ist wird auch betrogen. Aus diesem Grund wollen wir jezt auch gedopte Rennschnecken an unseren Rennen teilnehmen lassen. &lt;br /&gt;
** Erstelle eine Klasse &amp;quot;Dopingschnecke&amp;quot;, welche alle Attribute und Methoden der gemeinen &amp;quot;Rennschnecke&amp;quot; erbt.&lt;br /&gt;
** Überschreibe den geerbten Constructor, so das &amp;quot;Dopingschnecken&amp;quot; eine wesentlich höhere Maximalgeschwindigkeit erhalten als normale &amp;quot;Rennschnecken&amp;quot;.&lt;br /&gt;
** Überschreibe die geerbte Methode &amp;quot;String toString()&amp;quot; so dass Dopingschnecken anders ausgegeben werden als Rennschnecken (z.B. durch einen zusatz wie &amp;quot;rote Augen&amp;quot; oder ähnliches)&lt;br /&gt;
** Mische in einem Rennen Dopingschnecken unter deine Rennschnecken. Du musst dafür keinerlei Funktionalitäten änder. Dein Programm muss nicht wissen ob es sich um eine Dopingschnecke handelt, denn sie ist ja auch eine Rennschnecke.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kommentare ==&lt;br /&gt;
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf &amp;quot;bearbeiten&amp;quot; und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit &amp;quot;Vorschau zeigen&amp;quot; kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.&lt;br /&gt;
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)&lt;br /&gt;
&lt;br /&gt;
==== Robert ====&lt;br /&gt;
Na mal schauen, ob irgendjemand diese Funktion wirklich benutzt. Ich fände es jedenfalls toll.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Felix S. ====&lt;br /&gt;
&amp;quot;abhängig von ihrer Maximalgeschwindigkeit&amp;quot; verwirrte mehrmals Teilnehmer. Mathematischen Bezug/Verfahren hinschreiben bzw. erst mal auf das Kriechen konzentrieren.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java]]&lt;br /&gt;
[[Kategorie:Java_Aufgaben]]&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben&amp;diff=13708</id>
		<title>Javakurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben&amp;diff=13708"/>
		<updated>2010-03-25T10:24:46Z</updated>

		<summary type="html">&lt;p&gt;Andre: /* Die Aufgaben */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wir haben jeder Aufgabe eine Einschätzung ihrer Schwierigkeit auf einer Skala von 1 bis 10 vorangestellt. Bei dieser Einschätzung sind wir von einem Gehirn ausgegangen, für welches das jeweilige Themengebiet völlig neu ist, das jedoch schon ein ganz gutes Verständnis dafür hat wie eine Programmiersprache denn so funktioniert. &lt;br /&gt;
Entsprechend kann eine schwer bewertete Aufgabe aus einem frühen Themengebiet für manch einen sehr einfach oder eine leicht bewertete aus einem späten Themengebiet für einen anderen sehr schwer sein. Es ist nur ein Wert, der euch helfen soll eure nächste Aufgabe zu wählen. Einen kleinen Überblick zu den Schwierigkeitsgraden findet ihr ganz unten auf dieser Seite.&lt;br /&gt;
&lt;br /&gt;
Falls ihr Anmerkungen zu den Aufgaben habt, könnt ihr die Diskussionsseiten der jeweiligen Aufgaben nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Aufgabe&lt;br /&gt;
 !Schwierigkeit&lt;br /&gt;
 !Vorwissen&lt;br /&gt;
 !Lerneffekte&lt;br /&gt;
 !Überprüfer(Status)&lt;br /&gt;
 !Musterlösung&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Von der Console zum HelloWorld | Vom Arbeiten mit der Konsole bis &amp;quot;Hallo Welt&amp;quot;]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Einfaches Arbeiten mit der Kommandozeile &amp;lt;br&amp;gt; Kompilieren und Ausführen von Javacode&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Variablen_und_Zuweisungen | Variablen und Zuweisungen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Deklarieren und definieren von Variablen&amp;lt;br&amp;gt;grundlegende Regeln der Codeformatierung&lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Cowsay | Cowsay oder &amp;quot;Wie macht die Kuh?&amp;quot;]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | etwas mehr Bildschirmausgabe&amp;lt;br&amp;gt;schöne Graphiken&lt;br /&gt;
 | tkroenert (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Kassenbon | Erstellen eines Kassenbons]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Arbeiten mit Variablen&amp;lt;br&amp;gt;Fallunterscheidungen&lt;br /&gt;
 | AndyF (ok), Katrin (Alignment-Vorgabe hinzugefügt, siehe Kommentar)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Javamenue | Ein eigenes Menü]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Lesen von Benutzereingaben über die Konsole&amp;lt;br&amp;gt;Fallunterscheidungen&lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Glücksspiel | Glücksspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Anwenden von Fallunterscheidungen &lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Arrays | Quickies Arrays]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Verwenden von Arrays&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 | [[Javakurs2007/Arrays/Musterloesung | Musterlösung Quickies Arrays]]&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Verschachtelte_Schleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Primzahlenaufgabe | Primzahlen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Geschicktes Einsetzen von Schleifen und Arrays&lt;br /&gt;
 | andy (okay) &amp;lt;!-- === Andy ==== bei der Primzahl ist teil b leicht schafbar wenn man a gemacht hat deshalb keine musterlösung --&amp;gt;&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Wetterstation | Wetterstation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Schleifen und Arrays&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Geometrie | Geometrie]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Methoden schreiben&amp;lt;br&amp;gt;schreiben mathematischer Funktionen&lt;br /&gt;
 | AndyF (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Zweierpotenzen | Zweierpotenzen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Schleifen und Arrays&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Schleifen_und_Modulo | Schleifen und Modulo]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Verwendung von Schleifen&amp;lt;br&amp;gt;Benutzung des Modulo-Operators&lt;br /&gt;
 | andy(okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Methoden | Quickies zu Methoden]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Verwenden von Methoden&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/MathematischeMethoden | Mathematische Methoden]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schreiben eigener Methoden&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Schaltjahr | Schaltjahr]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schreiben von Methoden&amp;lt;br&amp;gt;Fallunterscheidungen&amp;lt;br&amp;gt;Benutzerinteraktion&lt;br /&gt;
 | andy (okay) &amp;lt;!-- === Andy === Zusatzaufgabe keine Musterlösung, ist aber auch einfach zu lösen--&amp;gt;&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Crack_the_Password | Crack the Password]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2/3. VL&lt;br /&gt;
 | Passwörter knacken ;-)&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Rekursion_vs._Iteration | Rekursion vs. Iteration]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Fehler finden&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Lineare_Funktionen | Lineare Funktionen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Verwendung von Methoden&amp;lt;br&amp;gt;Schleifen und Arrays&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Fibonacci | Fibonaccizahlen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schleifen und Arrays&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Brainfuck | Brainfuck vs Turingmaschine]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Arbeiten mit Arrays&amp;lt;br&amp;gt;Allgemeinwissen :-)&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Gau%C3%9F-Algorithmus | Gauß-Algorithmus]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Arrays und Matrizen&lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Zahlenumrechner | Zahlenumrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Arbeiten mit Methoden&amp;lt;br&amp;gt;mathematisches Denken&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs 2007/Democracy | Der Fehler im System]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Fehler finden&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Quersumme | Spaß mit Quersummen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5 - 7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Benutzung des Modulo-Operators&amp;lt;br&amp;gt;Auslagern von Funktionalität in Methoden&lt;br /&gt;
 | AndyF (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Appleman | Appleman und Fraktale]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schleifen, Umgang mit Fließkommazahlen&lt;br /&gt;
 | AndyF (ok), ÜBB-Link fixed(Jörg)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/DiffusionLimitedAggregation | Diffusion Limited Aggregation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | 2-dimensionale Arrays, Methoden, Schleifen&lt;br /&gt;
 | Dirk (dabei)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Palindrome | Palindrome]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Entwurf von Programmen&amp;lt;br&amp;gt;Parameterübergabe beim Programmaufruf&lt;br /&gt;
 | Jörg (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Hangman | Hangman]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Entwurf von Programmen&amp;lt;br&amp;gt;Arbeiten mit Methoden&lt;br /&gt;
 | Jörg (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/SelectionSort | Selection Sort]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Verstehen von komplexeren Algorithmen&amp;lt;br&amp;gt;Schleifen und Arrays&amp;lt;br&amp;gt;(Hilfs-)Methoden&lt;br /&gt;
 | Jörg (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Cäsar-Chiffre | Chiffrierung/Dechiffrierung (Cäsar)]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | eigenständiges Problemlösen. &amp;lt;br&amp;gt; Alle Konzepte des Kurses&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Abzaehlspiel | Abzählspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Analyse von Aufgabenstellungen&amp;lt;br&amp;gt;Entwurf eines komplexen Programms von Grund auf&lt;br /&gt;
 | alexK (ok)&lt;br /&gt;
 | [[Javakurs2007/Abzaehlspiel/Musterloesung | Musterlösung Abzählspiel]]&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2006/Rennschnecke | Schneckenrennen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Objektorientierte Programmierung&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Studentendatenbank_LE5 | Studentendatenbank]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Vertiefung in objektorientiertes Programmieren&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Multiarray| Mehrdimensionale Arrays]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |10&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Methoden, Schleifen, Arrays&amp;lt;br&amp;gt;Objektorientierung&lt;br /&gt;
 | Katrin (dabei)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Canvas | Virtuelles Canvas mit 3D-Objekten]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Arbeiten mit Methoden&amp;lt;br&amp;gt;mathematisches Denken&lt;br /&gt;
 | alexK (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Doom | ASCII DOOM ]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Vertiefung in objektorientierte Programmierung&amp;lt;br&amp;gt;Benutzung der Java-API&lt;br /&gt;
 | Mario (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Textwordcount | Texte lesen und analysieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | eigenständiges Problemlösen&lt;br /&gt;
 | Dirk (dabei)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schwierigkeitsgrade ==&lt;br /&gt;
&lt;br /&gt;
#  Reines Tutorial. Man muss nicht viel selbst denken&lt;br /&gt;
#  ...&lt;br /&gt;
#  Leichte Übungsaufgabe. Studies, die noch eher unsicher sind werden hier gut begleitet.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Typische Aufgabe. Man muss den Kopf benutzen, bekommt an schwierigen Stellen aber Hilfestellungen.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Herausfordernd, eher etwas für Studies die etwas fitter sind.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Auch erfahrene Programmierer weden hier ein bis zwei Übungen beschäftigt sein&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#  Tja, die Idee war da. Wir finden sie auch gut, aber es könnte wirklich anstrengend werden.&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
- Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Javakurs_2010/Feedback|Feedback zum Kurs 2010]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java]]&lt;br /&gt;
[[Kategorie:Java_Aufgaben]]&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Datei_Diskussion:LAN10.1.png&amp;diff=13700</id>
		<title>Datei Diskussion:LAN10.1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Datei_Diskussion:LAN10.1.png&amp;diff=13700"/>
		<updated>2010-03-24T20:04:01Z</updated>

		<summary type="html">&lt;p&gt;Andre: Die Seite wurde neu angelegt: „fehlt da nich n FI am ende? ~~~“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;fehlt da nich n FI am ende? [[Benutzer:Andre|Andre]]&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben&amp;diff=13699</id>
		<title>Javakurs/Übungsaufgaben</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben&amp;diff=13699"/>
		<updated>2010-03-24T19:58:16Z</updated>

		<summary type="html">&lt;p&gt;Andre: Musterlösung verlinkt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wir haben jeder Aufgabe eine Einschätzung ihrer Schwierigkeit auf einer Skala von 1 bis 10 vorangestellt. Bei dieser Einschätzung sind wir von einem Gehirn ausgegangen, für welches das jeweilige Themengebiet völlig neu ist, das jedoch schon ein ganz gutes Verständnis dafür hat wie eine Programmiersprache denn so funktioniert. &lt;br /&gt;
Entsprechend kann eine schwer bewertete Aufgabe aus einem frühen Themengebiet für manch einen sehr einfach oder eine leicht bewertete aus einem späten Themengebiet für einen anderen sehr schwer sein. Es ist nur ein Wert, der euch helfen soll eure nächste Aufgabe zu wählen. Einen kleinen Überblick zu den Schwierigkeitsgraden findet ihr ganz unten auf dieser Seite.&lt;br /&gt;
&lt;br /&gt;
Falls ihr Anmerkungen zu den Aufgaben habt, könnt ihr die Diskussionsseiten der jeweiligen Aufgaben nutzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;2&amp;quot;&lt;br /&gt;
 |- bgcolor=&amp;quot;#D8D8D8&amp;quot;&lt;br /&gt;
 !Aufgabe&lt;br /&gt;
 !Schwierigkeit&lt;br /&gt;
 !Vorwissen&lt;br /&gt;
 !Lerneffekte&lt;br /&gt;
 !Überprüfer(Status)&lt;br /&gt;
 !Musterlösung&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Von der Console zum HelloWorld | Vom Arbeiten mit der Konsole bis &amp;quot;Hallo Welt&amp;quot;]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Einfaches Arbeiten mit der Kommandozeile &amp;lt;br&amp;gt; Kompilieren und Ausführen von Javacode&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Variablen_und_Zuweisungen | Variablen und Zuweisungen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Deklarieren und definieren von Variablen&amp;lt;br&amp;gt;grundlegende Regeln der Codeformatierung&lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Cowsay | Cowsay oder &amp;quot;Wie macht die Kuh?&amp;quot;]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | etwas mehr Bildschirmausgabe&amp;lt;br&amp;gt;schöne Graphiken&lt;br /&gt;
 | tkroenert (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Kassenbon | Erstellen eines Kassenbons]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Arbeiten mit Variablen&amp;lt;br&amp;gt;Fallunterscheidungen&lt;br /&gt;
 | AndyF (ok), Katrin (Alignment-Vorgabe hinzugefügt, siehe Kommentar)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Javamenue | Ein eigenes Menü]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Lesen von Benutzereingaben über die Konsole&amp;lt;br&amp;gt;Fallunterscheidungen&lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Glücksspiel | Glücksspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |1. VL&lt;br /&gt;
 | Anwenden von Fallunterscheidungen &lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Arrays | Quickies Arrays]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Verwenden von Arrays&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 | [[Javakurs2007/Arrays/Musterloesung | Musterlösung Quickies Arrays]]&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Verschachtelte_Schleifen | Verschachtelte Schleifen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Umgang mit mehreren verschachtelten Schleifen&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Primzahlenaufgabe | Primzahlen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2-5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Geschicktes Einsetzen von Schleifen und Arrays&lt;br /&gt;
 | andy (okay) &amp;lt;!-- === Andy ==== bei der Primzahl ist teil b leicht schafbar wenn man a gemacht hat deshalb keine musterlösung --&amp;gt;&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Wetterstation | Wetterstation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Schleifen und Arrays&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Geometrie | Geometrie]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Methoden schreiben&amp;lt;br&amp;gt;schreiben mathematischer Funktionen&lt;br /&gt;
 | AndyF (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Zweierpotenzen | Zweierpotenzen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Schleifen und Arrays&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Schleifen_und_Modulo | Schleifen und Modulo]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2. VL&lt;br /&gt;
 | Verwendung von Schleifen&amp;lt;br&amp;gt;Benutzung des Modulo-Operators&lt;br /&gt;
 | andy(okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Methoden | Quickies zu Methoden]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Verwenden von Methoden&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/MathematischeMethoden | Mathematische Methoden]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schreiben eigener Methoden&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Schaltjahr | Schaltjahr]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schreiben von Methoden&amp;lt;br&amp;gt;Fallunterscheidungen&amp;lt;br&amp;gt;Benutzerinteraktion&lt;br /&gt;
 | andy (okay) &amp;lt;!-- === Andy === Zusatzaufgabe keine Musterlösung, ist aber auch einfach zu lösen--&amp;gt;&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Crack_the_Password | Crack the Password]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |2/3. VL&lt;br /&gt;
 | Passwörter knacken ;-)&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Rekursion_vs._Iteration | Rekursion vs. Iteration]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Fehler finden&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Lineare_Funktionen | Lineare Funktionen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Verwendung von Methoden&amp;lt;br&amp;gt;Schleifen und Arrays&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Fibonacci | Fibonaccizahlen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schleifen und Arrays&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Brainfuck | Brainfuck vs Turingmaschine]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Arbeiten mit Arrays&amp;lt;br&amp;gt;Allgemeinwissen :-)&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Gau%C3%9F-Algorithmus | Gauß-Algorithmus]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Arrays und Matrizen&lt;br /&gt;
 | sdyroff (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Zahlenumrechner | Zahlenumrechner]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Arbeiten mit Methoden&amp;lt;br&amp;gt;mathematisches Denken&lt;br /&gt;
 | andy (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs 2007/Democracy | Der Fehler im System]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Fehler finden&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Quersumme | Spaß mit Quersummen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5 - 7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Benutzung des Modulo-Operators&amp;lt;br&amp;gt;Auslagern von Funktionalität in Methoden&lt;br /&gt;
 | AndyF (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Appleman | Appleman und Fraktale]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | Schleifen, Umgang mit Fließkommazahlen&lt;br /&gt;
 | AndyF (ok), ÜBB-Link fixed(Jörg)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/DiffusionLimitedAggregation | Diffusion Limited Aggregation]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3. VL&lt;br /&gt;
 | 2-dimensionale Arrays, Methoden, Schleifen&lt;br /&gt;
 | Dirk (dabei)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Palindrome | Palindrome]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |3&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Entwurf von Programmen&amp;lt;br&amp;gt;Parameterübergabe beim Programmaufruf&lt;br /&gt;
 | Jörg (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Hangman | Hangman]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Entwurf von Programmen&amp;lt;br&amp;gt;Arbeiten mit Methoden&lt;br /&gt;
 | Jörg (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/SelectionSort | Selection Sort]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Verstehen von komplexeren Algorithmen&amp;lt;br&amp;gt;Schleifen und Arrays&amp;lt;br&amp;gt;(Hilfs-)Methoden&lt;br /&gt;
 | Jörg (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Cäsar-Chiffre | Chiffrierung/Dechiffrierung (Cäsar)]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |9&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | eigenständiges Problemlösen. &amp;lt;br&amp;gt; Alle Konzepte des Kurses&lt;br /&gt;
 | mars [ok]&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Abzaehlspiel | Abzählspiel]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4. VL&lt;br /&gt;
 | Analyse von Aufgabenstellungen&amp;lt;br&amp;gt;Entwurf eines komplexen Programms von Grund auf&lt;br /&gt;
 | alexK (ok)&lt;br /&gt;
 | [[Javakurs2007/Abzaehlspiel/Musterloesung | Musterlösung Abzählspiel]]&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2006/Rennschnecke | Schneckenrennen]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Objektorientierte Programmierung&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Studentendatenbank_LE5 | Studentendatenbank]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |4&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Vertiefung in objektorientiertes Programmieren&lt;br /&gt;
 | seba (okay)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Multiarray| Mehrdimensionale Arrays]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |10&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5. VL&lt;br /&gt;
 | Methoden, Schleifen, Arrays&amp;lt;br&amp;gt;Objektorientierung&lt;br /&gt;
 | Katrin (dabei)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Canvas | Virtuelles Canvas mit 3D-Objekten]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |5&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Arbeiten mit Methoden&amp;lt;br&amp;gt;mathematisches Denken&lt;br /&gt;
 | alexK (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#F5F5F5&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Doom | ASCII DOOM ]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |8&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | Vertiefung in objektorientierte Programmierung&amp;lt;br&amp;gt;Benutzung der Java-API&lt;br /&gt;
 | Mario (ok)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
 |- bgcolor=&amp;quot;#E8E8E8&amp;quot;&lt;br /&gt;
 | [[Javakurs2007/Textwordcount | Texte lesen und analysieren]]&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |7&lt;br /&gt;
 | align=&amp;quot;center&amp;quot; |6. VL&lt;br /&gt;
 | eigenständiges Problemlösen&lt;br /&gt;
 | Dirk (dabei)&lt;br /&gt;
 |&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schwierigkeitsgrade ==&lt;br /&gt;
&lt;br /&gt;
#  Reines Tutorial. Man muss nicht viel selbst denken&lt;br /&gt;
#  ...&lt;br /&gt;
#  Leichte Übungsaufgabe. Studies, die noch eher unsicher sind werden hier gut begleitet.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Typische Aufgabe. Man muss den Kopf benutzen, bekommt an schwierigen Stellen aber Hilfestellungen.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Herausfordernd, eher etwas für Studies die etwas fitter sind.&lt;br /&gt;
#  ...&lt;br /&gt;
#  Auch erfahrene Programmierer weden hier ein bis zwei Übungen beschäftigt sein&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
#  Tja, die Idee war da. Wir finden sie auch gut, aber es könnte wirklich anstrengend werden.&lt;br /&gt;
&lt;br /&gt;
== Kleine und große Probleme ==&lt;br /&gt;
&lt;br /&gt;
- Die Tubit-Accounts haben nicht /bin/bash als shell, so dass die &amp;lt;strong&amp;gt;Cursortasten&amp;lt;/strong&amp;gt; nicht funktionieren. Workaround: als erstes Kommando 'bash' eingeben, man sieht dann auch in welchem Verzeichnis man gerade ist.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Javakurs_2010/Feedback|Feedback zum Kurs 2010]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java]]&lt;br /&gt;
[[Kategorie:Java_Aufgaben]]&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Abzaehlspiel/Musterloesung&amp;diff=13698</id>
		<title>Javakurs/Übungsaufgaben/Abzaehlspiel/Musterloesung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Abzaehlspiel/Musterloesung&amp;diff=13698"/>
		<updated>2010-03-24T19:53:04Z</updated>

		<summary type="html">&lt;p&gt;Andre: Die Seite wurde neu angelegt: „= Abzählspiel - Musterlösung =   &amp;lt;nowiki&amp;gt; package abzaehlspiel;  public class Abzaehlspiel { 	public static void main(String[] args) 	{ 		int[] personen = new i...“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Abzählspiel - Musterlösung =&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
package abzaehlspiel;&lt;br /&gt;
&lt;br /&gt;
public class Abzaehlspiel&lt;br /&gt;
{&lt;br /&gt;
	public static void main(String[] args)&lt;br /&gt;
	{&lt;br /&gt;
		int[] personen = new int[10000];// Array fuer die Personen&lt;br /&gt;
		int i;// Zaehlvariable&lt;br /&gt;
&lt;br /&gt;
		// allen Personen eine Nummer zuweisen&lt;br /&gt;
		for (i = 0; i &amp;lt; 10000; i++)&lt;br /&gt;
		{&lt;br /&gt;
			// den Personen eine Nummer geben&lt;br /&gt;
			personen[i] = i + 1;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		int stelle = 0;// Stelle der Person, welche man gerade betrachtet&lt;br /&gt;
		int zaehler = 0;// Variable, mit der man bis zum 3. zaehlt&lt;br /&gt;
		int letzter = -1;// Stelle, an der der Letzte ertfernt wurde&lt;br /&gt;
&lt;br /&gt;
		// die eigentliche Abzaehlung&lt;br /&gt;
		do&lt;br /&gt;
		{&lt;br /&gt;
			// ueberpruefen ob die person noch da ist...&lt;br /&gt;
			if (personen[stelle] != 0)&lt;br /&gt;
			{&lt;br /&gt;
				// ... wenn ja, dann weiterzaehlen&lt;br /&gt;
				zaehler++;&lt;br /&gt;
&lt;br /&gt;
				// ueberpruefen ob man beim 3. angekommen ist...&lt;br /&gt;
				if (zaehler == 3)&lt;br /&gt;
				{&lt;br /&gt;
					// ... diese Person etfernen (seine Numer auf Null setzen)&lt;br /&gt;
					personen[stelle] = 0;&lt;br /&gt;
					zaehler = 0;// wieder von vorne anfangen zu zaehlen&lt;br /&gt;
					letzter = stelle;// merken, wo als letztes entfernt wurde&lt;br /&gt;
				}// if&lt;br /&gt;
			}// if&lt;br /&gt;
&lt;br /&gt;
			// zum naechsten gehen&lt;br /&gt;
			stelle++;&lt;br /&gt;
&lt;br /&gt;
			// ueberpruefen ob man am Ende ist...&lt;br /&gt;
			if (stelle == personen.length)&lt;br /&gt;
			{&lt;br /&gt;
				// ... dann am Anfang fortsetzen&lt;br /&gt;
				stelle = 0;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// die Schleife so lange wiederholen, bis man an der Stelle&lt;br /&gt;
			// angekommen ist, an der man als Letztes jemanden entfernt hat,&lt;br /&gt;
			// dann ist man einmal duch alle Personen durchgelaufen&lt;br /&gt;
			// und hat dabei keinen entfernt =&amp;gt; Ende&lt;br /&gt;
		} while (stelle != letzter);&lt;br /&gt;
&lt;br /&gt;
		System.out.println(&amp;quot;Uebrig bleiben:&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		// Alle Personen durchgehen...&lt;br /&gt;
		for (i = 0; i &amp;lt; 10000; i++)&lt;br /&gt;
		{&lt;br /&gt;
			// ... und wenn eine Person noch da ist...&lt;br /&gt;
			if (personen[i] != 0)&lt;br /&gt;
			{&lt;br /&gt;
				// ...ausgeben&lt;br /&gt;
				System.out.println(personen[i]);&lt;br /&gt;
			}&lt;br /&gt;
		}// for&lt;br /&gt;
&lt;br /&gt;
	}// main&lt;br /&gt;
}// class&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Abzaehlspiel&amp;diff=13692</id>
		<title>Javakurs/Übungsaufgaben/Abzaehlspiel</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Abzaehlspiel&amp;diff=13692"/>
		<updated>2010-03-24T14:33:04Z</updated>

		<summary type="html">&lt;p&gt;Andre: /* Kommentare */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Problembeschreibung ===&lt;br /&gt;
10000 Leute stehen durchnummeriert im Kreis. Nacheinander muss jeder Dritte gehen. Welche 2 Personen bleiben übrig?&lt;br /&gt;
&lt;br /&gt;
=== Arbeitsschritte === &lt;br /&gt;
&lt;br /&gt;
# Analysiert das Problem, gibt es noch Fragen oder Ungenauigkeiten in der Aufgabenstellung, die zuvor geklärt werden müssen?&lt;br /&gt;
# Entwerft den späteren Programmablauf auf Papier. Notiert euch dabei, welche Teilprobleme zu lösen sind.&lt;br /&gt;
# Verfeinert euren Entwurf, wie im [[Javakurs2007/Vortrag04|Vortrag 4]] gezeigt wurde.&lt;br /&gt;
# Schreibt nun das Programm. Und denkt dran: Immer wieder mal testen!&lt;br /&gt;
&lt;br /&gt;
== Kommentare ==&lt;br /&gt;
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf &amp;quot;bearbeiten&amp;quot; und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
wer hat noch 1 und 10000 raus?&lt;br /&gt;
&lt;br /&gt;
oder wer hat noch 2691 und 8922 raus xD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kann mal bitte irgendwer von den Tutoren, die richtige Lösung hier rein schreiben???&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Die 2692. und 8923. Person bleiben übrig. (welche die Indizes 2691 und 8922 haben)&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Rennschnecke/Musterloesung&amp;diff=13691</id>
		<title>Javakurs/Übungsaufgaben/Rennschnecke/Musterloesung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Rennschnecke/Musterloesung&amp;diff=13691"/>
		<updated>2010-03-24T13:56:53Z</updated>

		<summary type="html">&lt;p&gt;Andre: /* Rennschnecke - Musterlösung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Rennschnecke - Musterlösung =&lt;br /&gt;
&lt;br /&gt;
Dies ist eine ausführliche Musterlösung der Aufgabenstellung.&lt;br /&gt;
Vom Wettbüso gibt es zwei unterschiedliche Versionen, von denen die zweite die Zusatzaufgaben berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== Rennschnecke.java ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
package Schneckenrennen;&lt;br /&gt;
&lt;br /&gt;
import java.util.Random;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Eine Schnecke, welche an Rennen teilnehmen kann.&lt;br /&gt;
 * @author André Schulz&lt;br /&gt;
 * @version 1.0&lt;br /&gt;
 */&lt;br /&gt;
public class Rennschnecke&lt;br /&gt;
{&lt;br /&gt;
	private String name;&lt;br /&gt;
	private String rasse;&lt;br /&gt;
	private double vMax;&lt;br /&gt;
	private double strecke;// zurückgelegte Strcke am Startpunkt&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Konstruktor für Schnecken.&lt;br /&gt;
	 * @param name Name der Schnecke&lt;br /&gt;
	 * @param rasse Rasse der Schnecke&lt;br /&gt;
	 * @param vMax Maximalgeschwindigkeit der Schnecke&lt;br /&gt;
	 */&lt;br /&gt;
	public Rennschnecke(String name, String rasse, double vMax)&lt;br /&gt;
	{&lt;br /&gt;
		this.name = name;&lt;br /&gt;
		this.rasse = rasse;&lt;br /&gt;
		this.vMax = vMax;&lt;br /&gt;
		this.strecke = 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Bewegt die Schnecke mit einer zufälligen Geschwindigkeit (im Abhängigkeit von der Maximalgeschwindigkeit).&lt;br /&gt;
	 */&lt;br /&gt;
	public void krieche()&lt;br /&gt;
	{&lt;br /&gt;
		Random random = new Random();&lt;br /&gt;
		// Mximalgeschwindigkeit wird mit 0,01..1 multipliziert&lt;br /&gt;
		this.strecke += vMax * (random.nextInt(100) + 1) / 100;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt den Namen der Schnecke zurück.&lt;br /&gt;
	 * @return Name&lt;br /&gt;
	 */&lt;br /&gt;
	public String getName()&lt;br /&gt;
	{&lt;br /&gt;
		return name;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt die Rasse der Schnecke zurück.&lt;br /&gt;
	 * @return Rasse&lt;br /&gt;
	 */&lt;br /&gt;
	public String getRasse()&lt;br /&gt;
	{&lt;br /&gt;
		return rasse;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt die Maximalgeschwindigkeit zurück.&lt;br /&gt;
	 * @return Maximalgeschwindigkeit&lt;br /&gt;
	 */&lt;br /&gt;
	public double getVMax()&lt;br /&gt;
	{&lt;br /&gt;
		return vMax;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt die bereits zurückgelegte Strecke zurück.&lt;br /&gt;
	 * @return zurückgelegt Strecke&lt;br /&gt;
	 */&lt;br /&gt;
	public double getStrecke()&lt;br /&gt;
	{&lt;br /&gt;
		return strecke;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public String toString()&lt;br /&gt;
	{&lt;br /&gt;
		return &amp;quot;(&amp;quot; + name + &amp;quot;.&amp;quot; + rasse + &amp;quot;:&amp;quot; + vMax + &amp;quot;@&amp;quot; + strecke + &amp;quot;)&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Main-Methode (nur zum Testen)&lt;br /&gt;
	 * @param args (keine)&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args)&lt;br /&gt;
	{&lt;br /&gt;
		Rennschnecke snail = new Rennschnecke(&amp;quot;andre&amp;quot;, &amp;quot;human&amp;quot;, 100);&lt;br /&gt;
		System.out.println(snail);&lt;br /&gt;
	}&lt;br /&gt;
}// class Rennschnecke&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rennen.java ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
package Schneckenrennen;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Ein Rennen, an dem Schnecken teilnehmen.&lt;br /&gt;
 * @author André Schulz&lt;br /&gt;
 * @version 1.0&lt;br /&gt;
 */&lt;br /&gt;
public class Rennen&lt;br /&gt;
{&lt;br /&gt;
	private String name;&lt;br /&gt;
	private ArrayList&amp;lt;Rennschnecke&amp;gt; schnecken;&lt;br /&gt;
	private double renndistanz;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Konstruktor für Schneckenrennen&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 3) &lt;br /&gt;
	 * @param name Name des Schneckenrennens&lt;br /&gt;
	 * @param renndistanz distance off the race&lt;br /&gt;
	 */&lt;br /&gt;
	public Rennen(String name, double renndistanz)&lt;br /&gt;
	{&lt;br /&gt;
		this.name = name;&lt;br /&gt;
		//leere ArrayList von Schnecken&lt;br /&gt;
		this.schnecken = new ArrayList&amp;lt;Rennschnecke&amp;gt;();&lt;br /&gt;
		this.renndistanz = renndistanz;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fügt eine Schnecke dem Rennen hinzu.&amp;lt;br&amp;gt;&lt;br /&gt;
	 *(Punkt 4)&lt;br /&gt;
	 * @param schnecke eine zum Rennen hinzuzufügende Schnecke&lt;br /&gt;
	 * @throws IllegalArgumentException wenn versucht wird eine Schnecke mehrmals hinzuzufügen&lt;br /&gt;
	 */&lt;br /&gt;
	public void addRennschnecke(Rennschnecke schnecke)&lt;br /&gt;
	{&lt;br /&gt;
		//überprüfen, ob die Schnecke schon am Rennen teilnimmt (Doppelteilnahme verhindern)&lt;br /&gt;
		//(Zustazpunkt 1)&lt;br /&gt;
		if (this.schnecken.contains(schnecke))&lt;br /&gt;
		{&lt;br /&gt;
			//Exception werfen, wenn die Schnecke schon am Rennen teilnimmt&lt;br /&gt;
			//=&amp;gt; muss ein Programmierfehler sein&lt;br /&gt;
			throw new IllegalArgumentException(&amp;quot;This snail is alredy at this race!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		this.schnecken.add(schnecke);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Entfernt eine Schnecke aus dem Rennen.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (entfernt alle Schnecken, die den jeweiligen Namen haben)&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 5)&lt;br /&gt;
	 * @param name Name der zu entfernende(n) Schnecke(n)&lt;br /&gt;
	 */&lt;br /&gt;
	public void removeRennschnecke(String name)&lt;br /&gt;
	{&lt;br /&gt;
		Rennschnecke schnecke;&lt;br /&gt;
		//Iterator um die ArrayList zu durchlaufen&lt;br /&gt;
		Iterator&amp;lt;Rennschnecke&amp;gt; iter = schnecken.iterator();&lt;br /&gt;
&lt;br /&gt;
		//solange es noch Elemente in der ArrayList gibt...&lt;br /&gt;
		while (iter.hasNext())&lt;br /&gt;
		{&lt;br /&gt;
			//...sich den nächsten Eintrag nehmen...&lt;br /&gt;
			schnecke = iter.next();&lt;br /&gt;
			&lt;br /&gt;
			//...und überprüfen ob der Name mit dem zu entfernenden Namen übereinstimmt...&lt;br /&gt;
			if (schnecke.getName().equals(name))&lt;br /&gt;
			{&lt;br /&gt;
				//...wenn, dann diesen Eintrag aus der ArrayList entfernen&lt;br /&gt;
				iter.remove();&lt;br /&gt;
			}// if&lt;br /&gt;
		}// while&lt;br /&gt;
	}// removeSnail&lt;br /&gt;
&lt;br /&gt;
	public String toString()&lt;br /&gt;
	{&lt;br /&gt;
		//(Punkt 6)&lt;br /&gt;
		&lt;br /&gt;
		//StringBuilder ist Classe um Strings zu &amp;quot;bauen&amp;quot;&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
		&lt;br /&gt;
		//Metadaten des Rennens (Name, Teilnehmeranzahl, Distanz)&lt;br /&gt;
		sb.append(this.name + &amp;quot;(&amp;quot; + this.schnecken.size() + &amp;quot;) :&amp;quot; + this.renndistanz + &amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		//die gesamte ArrayList durchlaufen und alle Schnecke hinzufügen&lt;br /&gt;
		for (Rennschnecke snail : this.schnecken)&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(snail);&lt;br /&gt;
			sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
		}// for&lt;br /&gt;
&lt;br /&gt;
		//wenn es einen Gewinner gibt&lt;br /&gt;
		if (this.getGewinner() != null)&lt;br /&gt;
		{&lt;br /&gt;
			//...dann wird er hinzugefügt&lt;br /&gt;
			sb.append(&amp;quot;Gewinner:&amp;quot;);&lt;br /&gt;
			sb.append(this.getGewinner());&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			//..ansonsten nicht&lt;br /&gt;
			sb.append(&amp;quot;Rennen noch nicht gestartet!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		//den gebauten String in eine echte Zeichenkette konvertieren&lt;br /&gt;
		return sb.toString();&lt;br /&gt;
	}// toString&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Methode liefert auch einen String, welcher das Rennen repräsentiert,&lt;br /&gt;
	 * doch ist der Aufbau etwas übersichtlicher. (tabellarisch)&lt;br /&gt;
	 * @return String-Repräsentation des Schneckenrennens&lt;br /&gt;
	 */&lt;br /&gt;
	public String getPrintString()&lt;br /&gt;
	{&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
		sb.append(&amp;quot;Rennen: '&amp;quot;);&lt;br /&gt;
		sb.append(this.name);&lt;br /&gt;
		sb.append(&amp;quot;' Teilnehmer: &amp;quot;);&lt;br /&gt;
		sb.append(this.schnecken.size());&lt;br /&gt;
		sb.append(&amp;quot; Distanz: &amp;quot;);&lt;br /&gt;
		sb.append(this.renndistanz);&lt;br /&gt;
		sb.append(&amp;quot;\nSchnecken:\n&amp;quot;);&lt;br /&gt;
		sb.append(&amp;quot;+Name\t+Rasse\t+vMax\t+Strecke\n&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		for (Rennschnecke snail : this.schnecken)&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(snail.getName());&lt;br /&gt;
			sb.append(&amp;quot;\t&amp;quot;);//zwischen den einzelnen Atributen der Schnecken wird ein TabStop eingefügt&lt;br /&gt;
			sb.append(snail.getRasse());&lt;br /&gt;
			sb.append(&amp;quot;\t&amp;quot;);&lt;br /&gt;
			sb.append(snail.getVMax());&lt;br /&gt;
			sb.append(&amp;quot;\t&amp;quot;);&lt;br /&gt;
			sb.append(snail.getStrecke());&lt;br /&gt;
			sb.append(&amp;quot;\t\n&amp;quot;);&lt;br /&gt;
		}// for&lt;br /&gt;
		&lt;br /&gt;
		if (this.getGewinner() != null)&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(&amp;quot;Gewinner:&amp;quot;);&lt;br /&gt;
			sb.append(this.getGewinner());&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(&amp;quot;Rennen noch nicht gestartet!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		return sb.toString();&lt;br /&gt;
	}//getPrintString&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt das Rennen tabellarisch auf der Konsole aus.&lt;br /&gt;
	 */&lt;br /&gt;
	public void print()&lt;br /&gt;
	{&lt;br /&gt;
		System.out.println(getPrintString());&lt;br /&gt;
	}// print&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt den Gewinner des Rennens zurück.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Gibt &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; zurück, wenn das Rennen noch nciht beendet wurde.)&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 8)&lt;br /&gt;
	 * @return Gewinner des Rennens&lt;br /&gt;
	 */&lt;br /&gt;
	public Rennschnecke getGewinner()&lt;br /&gt;
	{&lt;br /&gt;
		Rennschnecke gewinner = null;//bis jetzt ist noch keiner bekannt...&lt;br /&gt;
		&lt;br /&gt;
		//durchlaufe alle Schnecken...&lt;br /&gt;
		for (Rennschnecke schnecke : schnecken)&lt;br /&gt;
		{&lt;br /&gt;
			//...überprüfe ob eine die Renndistanz zurückgelegt hat&lt;br /&gt;
			if (schnecke.getStrecke() &amp;gt; this.renndistanz)&lt;br /&gt;
			{&lt;br /&gt;
				//wenn bisher noch kein gewinner ermittelt wurde...&lt;br /&gt;
				if (gewinner == null)&lt;br /&gt;
				{&lt;br /&gt;
					//...dann ist die Schnecke der gewinner&lt;br /&gt;
					gewinner = schnecke;&lt;br /&gt;
				}&lt;br /&gt;
				else&lt;br /&gt;
				{&lt;br /&gt;
					//...andernfalls ist die Schnecke welche weiter ist der Gewinner&lt;br /&gt;
					//(Zusatzpunkt 3)&lt;br /&gt;
					if (schnecke.getStrecke() &amp;gt; gewinner.getStrecke())&lt;br /&gt;
					{&lt;br /&gt;
						gewinner = schnecke;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}// if&lt;br /&gt;
		}// for&lt;br /&gt;
&lt;br /&gt;
		return gewinner;&lt;br /&gt;
	}//getWinner&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt alle Schnecken zurück.&lt;br /&gt;
	 * @return alle Schnecken&lt;br /&gt;
	 */&lt;br /&gt;
	public ArrayList&amp;lt;Rennschnecke&amp;gt; getSchnecken()&lt;br /&gt;
	{&lt;br /&gt;
		return this.schnecken;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt den Namen des Rennens zurück&lt;br /&gt;
	 * @return Rennname&lt;br /&gt;
	 */&lt;br /&gt;
	public String getName()&lt;br /&gt;
	{&lt;br /&gt;
		return this.name;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Lässt alle Schnecken ein mal kriechen.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 9) &lt;br /&gt;
	 */&lt;br /&gt;
	public void lasseSchneckenKriechen()&lt;br /&gt;
	{&lt;br /&gt;
		for (Rennschnecke snail : schnecken)&lt;br /&gt;
		{&lt;br /&gt;
			snail.krieche();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Führt das Rennen durch&amp;lt;br&amp;gt;&lt;br /&gt;
	 * Bewegt alle Schnecken so lange, bis eine im Zeil ist.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 10)&lt;br /&gt;
	 */&lt;br /&gt;
	public void durchfuehren()&lt;br /&gt;
	{&lt;br /&gt;
		System.out.println(&amp;quot;Rennen '&amp;quot; + this.name + &amp;quot;' wird durchgeführt...&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		//so lange es keinen Gewinner gibt...&lt;br /&gt;
		while (this.getGewinner() == null)&lt;br /&gt;
		{&lt;br /&gt;
			//...alle Schnecken ein mal kriechen lassen.&lt;br /&gt;
			this.lasseSchneckenKriechen();&lt;br /&gt;
		}// while&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Maim-Methode (nur zum Testen)&lt;br /&gt;
	 * @param args (keine)&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args)&lt;br /&gt;
	{&lt;br /&gt;
		Rennen testRennen = new Rennen(&amp;quot;Test&amp;quot;, 100000);&lt;br /&gt;
&lt;br /&gt;
		testRennen.addRennschnecke(new Rennschnecke(&amp;quot;andre&amp;quot;, &amp;quot;human&amp;quot;, 100));&lt;br /&gt;
		testRennen.addRennschnecke(new Rennschnecke(&amp;quot;klaus&amp;quot;, &amp;quot;human&amp;quot;, 90));&lt;br /&gt;
		testRennen.addRennschnecke(new Rennschnecke(&amp;quot;hans&amp;quot;, &amp;quot;human&amp;quot;, 75));&lt;br /&gt;
&lt;br /&gt;
		System.out.println(testRennen);&lt;br /&gt;
		&lt;br /&gt;
		testRennen.durchfuehren();&lt;br /&gt;
		System.out.println(testRennen);&lt;br /&gt;
	}&lt;br /&gt;
}// class Rennen&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wettbuero.java ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
package Schneckenrennen;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Wettbüro (einfache Version)&lt;br /&gt;
 * @author André Schulz&lt;br /&gt;
 * @version 1.0&lt;br /&gt;
 */&lt;br /&gt;
public class Wettbuero&lt;br /&gt;
{&lt;br /&gt;
	private Rennen rennen;&lt;br /&gt;
	private ArrayList&amp;lt;Wette&amp;gt; wetten;&lt;br /&gt;
	private double faktor;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Konstruktor für ein Wettbüro.&lt;br /&gt;
	 * @param rennen das Rennen, welches dieses Wettbüro betreuen soll&lt;br /&gt;
	 * @param faktor der Faktor, welcher bei gewinnen ausgezahlt wird&lt;br /&gt;
	 * @throws IllegalArgumentException wenn versucht wird einen negativen Wetteinsatz zu verwenden&lt;br /&gt;
	 */&lt;br /&gt;
	public Wettbuero(Rennen rennen, double faktor)&lt;br /&gt;
	{&lt;br /&gt;
		// wenn der Wetteinsatz negativ sein soll =&amp;gt; Fehler&lt;br /&gt;
		// (Zusatzpunkt 2)&lt;br /&gt;
		if (faktor &amp;lt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			throw new IllegalArgumentException(&amp;quot;Es dürfen keine Negativen Wetten abgeschlossen werden!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		this.rennen = rennen;&lt;br /&gt;
		this.faktor = faktor;&lt;br /&gt;
		this.wetten = new ArrayList&amp;lt;Wette&amp;gt;();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fügt eine Wette hinzu.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 2)&lt;br /&gt;
	 * @param schneckenname Name der Schnecke auf die gesetzt wird&lt;br /&gt;
	 * @param wetteinsatz der Wetteinsatz&lt;br /&gt;
	 * @param spielername Name des Spielers, welche doe Wette tätigt&lt;br /&gt;
	 */&lt;br /&gt;
	public void wetteAnnehmen(String schneckenname, double wetteinsatz, String spielername)&lt;br /&gt;
	{&lt;br /&gt;
		wetten.add(new Wette(schneckenname, wetteinsatz, spielername));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Führt das Rennen durch.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 3)&lt;br /&gt;
	 */&lt;br /&gt;
	public void rennenDurchfuehren()&lt;br /&gt;
	{&lt;br /&gt;
		this.rennen.durchfuehren();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public String toString()&lt;br /&gt;
	{&lt;br /&gt;
		// (Punkt 4)&lt;br /&gt;
&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
		// zu erst das Rennen ausgeben&lt;br /&gt;
		sb.append(&amp;quot;Renen:\n&amp;quot;);&lt;br /&gt;
		sb.append(this.rennen);&lt;br /&gt;
		sb.append(&amp;quot;Wetten:\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		// dann Wetten ausgeben, wenn vorhanden&lt;br /&gt;
		if (wetten.size() &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			for (Wette wette : this.wetten)&lt;br /&gt;
			{&lt;br /&gt;
				sb.append(wette);&lt;br /&gt;
				sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
			}// for&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(&amp;quot;(keine)&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return sb.toString();&lt;br /&gt;
	}// toString&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt das Wettbüro, mit dem dazugehörigen Rennen aus.&lt;br /&gt;
	 */&lt;br /&gt;
	public void print()&lt;br /&gt;
	{&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
		sb.append(&amp;quot;Wettbüro für:\n&amp;quot;);&lt;br /&gt;
		sb.append(this.rennen.getPrintString());&lt;br /&gt;
		sb.append(&amp;quot;Wetten:\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		if (wetten.size() &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			for (Wette bet : this.wetten)&lt;br /&gt;
			{&lt;br /&gt;
				sb.append(bet);&lt;br /&gt;
				sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
			}// for&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(&amp;quot;(keine)&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		System.out.println(sb.toString());&lt;br /&gt;
	}// print&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Main-Methode (nur zum Testen)&lt;br /&gt;
	 * @param args (keine)&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args)&lt;br /&gt;
	{&lt;br /&gt;
		Rennen rennen = new Rennen(&amp;quot;testRace&amp;quot;, 100000);&lt;br /&gt;
&lt;br /&gt;
		rennen.addRennschnecke(new Rennschnecke(&amp;quot;andre&amp;quot;, &amp;quot;human&amp;quot;, 100));&lt;br /&gt;
		rennen.addRennschnecke(new Rennschnecke(&amp;quot;klaus&amp;quot;, &amp;quot;human&amp;quot;, 90));&lt;br /&gt;
		rennen.addRennschnecke(new Rennschnecke(&amp;quot;hans&amp;quot;, &amp;quot;human&amp;quot;, 75));&lt;br /&gt;
&lt;br /&gt;
		Wettbuero wettbuero = new Wettbuero(rennen, 1.5);&lt;br /&gt;
&lt;br /&gt;
		// TODO Wetten hinzufügen&lt;br /&gt;
&lt;br /&gt;
		wettbuero.print();&lt;br /&gt;
&lt;br /&gt;
		wettbuero.rennenDurchfuehren();&lt;br /&gt;
&lt;br /&gt;
		wettbuero.print();&lt;br /&gt;
&lt;br /&gt;
	}// main&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Wette.&lt;br /&gt;
	 * @author André Schulz&lt;br /&gt;
	 * @version 1.0&lt;br /&gt;
	 */&lt;br /&gt;
	private class Wette&lt;br /&gt;
	{&lt;br /&gt;
		private String spielerName;&lt;br /&gt;
		private String schneckenName;&lt;br /&gt;
		private double wetteinsatz;&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Konstruktor erstellt eine neue Wette.&lt;br /&gt;
		 * @param schneckenName Name der Schnecke auf die gesetzt werden soll.&lt;br /&gt;
		 * @param wetteinsatz der Wetteinsatz für die Wette&lt;br /&gt;
		 * @param spielerName der Name des Spielers&lt;br /&gt;
		 */&lt;br /&gt;
		public Wette(String schneckenName, double wetteinsatz, String spielerName)&lt;br /&gt;
		{&lt;br /&gt;
			if (wetteinsatz &amp;lt; 0)&lt;br /&gt;
			{&lt;br /&gt;
				throw new IllegalArgumentException(&amp;quot;betAmount must be &amp;gt;=0!&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			this.spielerName = spielerName;&lt;br /&gt;
			this.schneckenName = schneckenName;&lt;br /&gt;
			this.wetteinsatz = wetteinsatz;&lt;br /&gt;
		}// Wette&lt;br /&gt;
&lt;br /&gt;
		public String toString()&lt;br /&gt;
		{&lt;br /&gt;
			return this.spielerName + &amp;quot;:&amp;quot; + this.wetteinsatz + &amp;quot;@&amp;quot; + this.schneckenName;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Gibt den Namen des Spielers dieser Wette zurück.&lt;br /&gt;
		 * @return Name des Spielers&lt;br /&gt;
		 */&lt;br /&gt;
		public String getSpielername()&lt;br /&gt;
		{&lt;br /&gt;
			return spielerName;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Gibt den Namen der Schnecke zurück, auf die gesetzt wurde.&lt;br /&gt;
		 * @return Name der Schnecke&lt;br /&gt;
		 */&lt;br /&gt;
		public String getSchneckenname()&lt;br /&gt;
		{&lt;br /&gt;
			return schneckenName;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Gibt den Wetteinsatz zurück.&lt;br /&gt;
		 * @return Wetteinsatz&lt;br /&gt;
		 */&lt;br /&gt;
		public double getWetteinsatz()&lt;br /&gt;
		{&lt;br /&gt;
			return wetteinsatz;&lt;br /&gt;
		}&lt;br /&gt;
	}// class Wette&lt;br /&gt;
}// class Wettbuero&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Wettbuero_2.java (verbesserte Version) ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
package Schneckenrennen;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Collections;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Wettbüro (verbesserte Version)&lt;br /&gt;
 * @author André Schulz&lt;br /&gt;
 * @version 2.0&lt;br /&gt;
 */&lt;br /&gt;
public class Wettbuero_2&lt;br /&gt;
{&lt;br /&gt;
	private Rennen rennen;&lt;br /&gt;
	private ArrayList&amp;lt;Spieler&amp;gt; spieler;&lt;br /&gt;
	private ArrayList&amp;lt;Wette&amp;gt; wetten;&lt;br /&gt;
	private double faktor;&lt;br /&gt;
	private Rennschnecke gewinner;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Konstruktor für ein Wettbüro.&lt;br /&gt;
	 * @param rennen das Rennen, welches dieses Wettbüro betreuen soll&lt;br /&gt;
	 * @param faktor der Faktor, welcher bei gewinnen ausgezahlt wird&lt;br /&gt;
	 * @throws IllegalArgumentException wenn versucht wird einen negativen Wetteinsatz zu verwenden&lt;br /&gt;
	 */&lt;br /&gt;
	public Wettbuero_2(Rennen rennen, double faktor)&lt;br /&gt;
	{&lt;br /&gt;
		// wenn der Wetteinsatz negativ sein sollte =&amp;gt; Fehler&lt;br /&gt;
		// (Zusatzpunkt 2)&lt;br /&gt;
		if (faktor &amp;lt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			throw new IllegalArgumentException(&amp;quot;Es dürfen keine Negativen Wetten abgeschlossen werden!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		this.rennen = rennen;&lt;br /&gt;
		this.faktor = faktor;&lt;br /&gt;
		this.spieler = new ArrayList&amp;lt;Spieler&amp;gt;();&lt;br /&gt;
		this.wetten = new ArrayList&amp;lt;Wette&amp;gt;();&lt;br /&gt;
	}// Wettbuero_2&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fügt dem Wettbüro einen neuen Spieler hinzu.&lt;br /&gt;
	 * @param spielerName der Name des Spielers&lt;br /&gt;
	 */&lt;br /&gt;
	public Spieler addSpieler(String spielerName)&lt;br /&gt;
	{&lt;br /&gt;
		// neunen Spieler erstellen&lt;br /&gt;
		Spieler spieler = new Spieler(spielerName);&lt;br /&gt;
&lt;br /&gt;
		// wenn der Spieler noch nicht vorhanden ist =&amp;gt; hinzufügen&lt;br /&gt;
		if (!this.spieler.contains(spieler))&lt;br /&gt;
		{&lt;br /&gt;
			this.spieler.add(spieler);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return spieler;&lt;br /&gt;
	}// addSpieler&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fügt eine Wette hinzu.&lt;br /&gt;
	 * @param schneckenName der Name der Schnecke, auf die gesetzt werden soll&lt;br /&gt;
	 * @param wetteinsatz der Wetteinsatz aud die Schnecke&lt;br /&gt;
	 * @param spielerName der Name des Spielers&lt;br /&gt;
	 */&lt;br /&gt;
	public void addWette(String schneckenName, double wetteinsatz, Spieler spieler)&lt;br /&gt;
	{&lt;br /&gt;
		for (Rennschnecke snail : this.rennen.getSchnecken())&lt;br /&gt;
		{&lt;br /&gt;
			if (snail.getName().equals(schneckenName))&lt;br /&gt;
			{&lt;br /&gt;
				wetten.add(new Wette(snail, wetteinsatz, spieler));&lt;br /&gt;
				return;&lt;br /&gt;
			}// if&lt;br /&gt;
		}// for&lt;br /&gt;
&lt;br /&gt;
		throw new IllegalArgumentException(&amp;quot;Eine Schnecke mit dem Namen '&amp;quot; + schneckenName + &amp;quot;' gibts in dem Rennen '&amp;quot; + this.rennen.getName() + &amp;quot; nicht!&amp;quot;);&lt;br /&gt;
	}// addWette&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Führt das Rennen durch.&lt;br /&gt;
	 */&lt;br /&gt;
	public void rennenDurchfuehren()&lt;br /&gt;
	{&lt;br /&gt;
		this.rennen.durchfuehren();&lt;br /&gt;
		this.gewinner = this.rennen.getGewinner();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public String toString()&lt;br /&gt;
	{&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
		sb.append(&amp;quot;Rennen:\n&amp;quot;);&lt;br /&gt;
		sb.append(this.rennen);&lt;br /&gt;
		sb.append(&amp;quot;Wetten:\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		if (wetten.size() &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			for (Wette bet : this.wetten)&lt;br /&gt;
			{&lt;br /&gt;
				sb.append(bet);&lt;br /&gt;
				sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
			}// for&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(&amp;quot;(keine)&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return sb.toString();&lt;br /&gt;
	}// toString&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Methode wertet alle Wetten aus.&lt;br /&gt;
	 */&lt;br /&gt;
	public void wettenAuswerten()&lt;br /&gt;
	{&lt;br /&gt;
		for (Wette wette : this.wetten)&lt;br /&gt;
		{&lt;br /&gt;
			wette.setzeGewinn(this.gewinner, this.faktor);&lt;br /&gt;
		}&lt;br /&gt;
	}// wettenAuswerten&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Main-Mthode zum Testen.&lt;br /&gt;
	 * @param args (none)&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args)&lt;br /&gt;
	{&lt;br /&gt;
		// rennen erstellen&lt;br /&gt;
		Rennen race = new Rennen(&amp;quot;Testrennen&amp;quot;, 100000);&lt;br /&gt;
&lt;br /&gt;
		// Schnecken hinzufügen&lt;br /&gt;
		race.addRennschnecke(new Rennschnecke(&amp;quot;andre&amp;quot;, &amp;quot;Mensch&amp;quot;, 100));&lt;br /&gt;
		race.addRennschnecke(new Rennschnecke(&amp;quot;klaus&amp;quot;, &amp;quot;Mensch&amp;quot;, 90));&lt;br /&gt;
		race.addRennschnecke(new Rennschnecke(&amp;quot;hans&amp;quot;, &amp;quot;Mensch&amp;quot;, 75));&lt;br /&gt;
&lt;br /&gt;
		// Wettbüro erstellen&lt;br /&gt;
		Wettbuero_2 wettbuero = new Wettbuero_2(race, 1.5);&lt;br /&gt;
&lt;br /&gt;
		// Spieler erstellen&lt;br /&gt;
		Spieler spielerAndre = wettbuero.addSpieler(&amp;quot;andre&amp;quot;);&lt;br /&gt;
		Spieler spielerHans = wettbuero.addSpieler(&amp;quot;hans&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		// wetten setzen&lt;br /&gt;
		wettbuero.addWette(&amp;quot;andre&amp;quot;, 100, spielerAndre);&lt;br /&gt;
		wettbuero.addWette(&amp;quot;hans&amp;quot;, 100, spielerHans);&lt;br /&gt;
		wettbuero.addWette(&amp;quot;andre&amp;quot;, 10, spielerHans);&lt;br /&gt;
&lt;br /&gt;
		// Wettbüro ausgeben (vor dem Lauf)&lt;br /&gt;
		System.out.println(wettbuero);&lt;br /&gt;
&lt;br /&gt;
		// Rennen durchführen udn auswerten&lt;br /&gt;
		wettbuero.rennenDurchfuehren();&lt;br /&gt;
		wettbuero.wettenAuswerten();&lt;br /&gt;
&lt;br /&gt;
		// Wettbüro ausgeben (nach dem Lauf)&lt;br /&gt;
		System.out.println(wettbuero);&lt;br /&gt;
&lt;br /&gt;
		// zeigt die einzelnen Spieler&lt;br /&gt;
		System.out.println(&amp;quot;Spielerübersicht:&amp;quot;);&lt;br /&gt;
		wettbuero.zeigeSpieler();&lt;br /&gt;
	}// main&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Methode gibt alle Spieler mit ihren jeweiligen Wetten übersichtlich aus.&lt;br /&gt;
	 */&lt;br /&gt;
	public void zeigeSpieler()&lt;br /&gt;
	{&lt;br /&gt;
		// sortieren aller Wetten (nach Spielername)&lt;br /&gt;
		Collections.sort(this.wetten);&lt;br /&gt;
&lt;br /&gt;
		String oldSpielerName = &amp;quot;&amp;quot;;&lt;br /&gt;
		double wetteinsatz = 0;// Gesamtwetteinsatz eines Spielers&lt;br /&gt;
		double wettgewinn = 0;// Gesamtwettgewinn eines Spielers&lt;br /&gt;
&lt;br /&gt;
		System.out.println(&amp;quot;Spieler\tSchnecke\tEinsatz\tGewinn\tSaldo&amp;quot;);&lt;br /&gt;
		System.out.println(&amp;quot;================================================&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		for (Wette wette : this.wetten)&lt;br /&gt;
		{&lt;br /&gt;
			if (wette.spieler.name == oldSpielerName)&lt;br /&gt;
			{&lt;br /&gt;
				System.out.println(&amp;quot;\t&amp;quot; + wette.schnecke.getRasse() + &amp;quot;.&amp;quot; + wette.schnecke.getName() + &amp;quot;\t&amp;quot; + wette.wetteinsatz + &amp;quot;\t&amp;quot; + wette.wettgewinn + &amp;quot;\t&amp;quot; + (wette.wettgewinn - wette.wetteinsatz));&lt;br /&gt;
&lt;br /&gt;
				wetteinsatz += wette.wetteinsatz;&lt;br /&gt;
				wettgewinn += wette.wettgewinn;&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				if (oldSpielerName != &amp;quot;&amp;quot;)&lt;br /&gt;
				{&lt;br /&gt;
					System.out.println(&amp;quot;\t\t\t------------------------&amp;quot;);&lt;br /&gt;
					System.out.println(&amp;quot;\t\t\t&amp;quot; + wetteinsatz + &amp;quot;\t&amp;quot; + wettgewinn + &amp;quot;\t&amp;quot; + (wettgewinn - wetteinsatz));&lt;br /&gt;
				}// if&lt;br /&gt;
&lt;br /&gt;
				System.out.println(wette.spieler.name);&lt;br /&gt;
				System.out.println(&amp;quot;\t&amp;quot; + wette.schnecke.getRasse() + &amp;quot;.&amp;quot; + wette.schnecke.getName() + &amp;quot;\t&amp;quot; + wette.wetteinsatz + &amp;quot;\t&amp;quot; + wette.wettgewinn + &amp;quot;\t&amp;quot; + (wette.wettgewinn - wette.wetteinsatz));&lt;br /&gt;
&lt;br /&gt;
				oldSpielerName = wette.spieler.name;&lt;br /&gt;
				wetteinsatz = wette.wetteinsatz;&lt;br /&gt;
				wettgewinn = wette.wettgewinn;&lt;br /&gt;
			}// else&lt;br /&gt;
		}// for&lt;br /&gt;
&lt;br /&gt;
		if (oldSpielerName != &amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			System.out.println(&amp;quot;\t\t\t------------------------&amp;quot;);&lt;br /&gt;
			System.out.println(&amp;quot;\t\t\t&amp;quot; + wetteinsatz + &amp;quot;\t&amp;quot; + wettgewinn + &amp;quot;\t&amp;quot; + (wettgewinn - wetteinsatz));&lt;br /&gt;
		}// if&lt;br /&gt;
	}// zeigeSpieler&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Eine Wette.&lt;br /&gt;
	 */&lt;br /&gt;
	private class Wette implements Comparable&amp;lt;Wette&amp;gt;&lt;br /&gt;
	{&lt;br /&gt;
		private Spieler spieler;&lt;br /&gt;
		private Rennschnecke schnecke;&lt;br /&gt;
		private double wetteinsatz;&lt;br /&gt;
		private double wettgewinn;&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Konstruktor für wetten.&lt;br /&gt;
		 * @param schnecke die Schnecke&lt;br /&gt;
		 * @param wetteinsatz der Wetteinsatz&lt;br /&gt;
		 * @param spieler der Spieler der wettet&lt;br /&gt;
		 */&lt;br /&gt;
		public Wette(Rennschnecke schnecke, double wetteinsatz, Spieler spieler)&lt;br /&gt;
		{&lt;br /&gt;
			if (wetteinsatz &amp;lt; 0)&lt;br /&gt;
			{&lt;br /&gt;
				throw new IllegalArgumentException(&amp;quot;Wetteinsatz muss &amp;gt;=0 sein!&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			this.spieler = spieler;&lt;br /&gt;
			this.schnecke = schnecke;&lt;br /&gt;
			this.wetteinsatz = wetteinsatz;&lt;br /&gt;
			this.wettgewinn = -1;&lt;br /&gt;
		}// Wette&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Methode setzt in Abhängigkeit vom Gewinner den Wettgewinn.&lt;br /&gt;
		 * @param gewinner die Schnecke, welce das Rennen gewonnen hat&lt;br /&gt;
		 * @param faktor der Gewinnfaktor&lt;br /&gt;
		 */&lt;br /&gt;
		public void setzeGewinn(Rennschnecke gewinner, double faktor)&lt;br /&gt;
		{&lt;br /&gt;
			if (this.schnecke.equals(gewinner))&lt;br /&gt;
			{&lt;br /&gt;
				// auf Gewinner gesetzt =&amp;gt; Wettgewinn setzen&lt;br /&gt;
				this.wettgewinn = this.wetteinsatz * faktor;&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				// auf andere Schnecke gesetzt =&amp;gt; kein Gewinn&lt;br /&gt;
				this.wettgewinn = 0;&lt;br /&gt;
			}&lt;br /&gt;
		}// setzeGewinn&lt;br /&gt;
&lt;br /&gt;
		public String toString()&lt;br /&gt;
		{&lt;br /&gt;
			StringBuilder sb = new StringBuilder();&lt;br /&gt;
			sb.append(this.spieler);&lt;br /&gt;
			sb.append(&amp;quot;:&amp;quot;);&lt;br /&gt;
			sb.append(this.wetteinsatz);&lt;br /&gt;
			sb.append(&amp;quot;@&amp;quot;);&lt;br /&gt;
			sb.append(this.schnecke);&lt;br /&gt;
&lt;br /&gt;
			if (this.wettgewinn != -1)&lt;br /&gt;
			{&lt;br /&gt;
				sb.append(&amp;quot;-&amp;gt;&amp;quot;);&lt;br /&gt;
				sb.append(this.wettgewinn);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			return sb.toString();&lt;br /&gt;
		}// toString&lt;br /&gt;
&lt;br /&gt;
		@Override&lt;br /&gt;
		public int compareTo(Wette other)&lt;br /&gt;
		{&lt;br /&gt;
			return this.spieler.name.compareTo(other.spieler.name);&lt;br /&gt;
		}&lt;br /&gt;
	}// class Bet&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Ein Spieler welcher Wetten tätigt.&lt;br /&gt;
	 * @author André Schulz&lt;br /&gt;
	 * @version 1.0&lt;br /&gt;
	 */&lt;br /&gt;
	public class Spieler&lt;br /&gt;
	{&lt;br /&gt;
		private String name;&lt;br /&gt;
&lt;br /&gt;
		public Spieler(String name)&lt;br /&gt;
		{&lt;br /&gt;
			this.name = name;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		public String getName()&lt;br /&gt;
		{&lt;br /&gt;
			return this.name;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		public String toString()&lt;br /&gt;
		{&lt;br /&gt;
			return name;&lt;br /&gt;
		}&lt;br /&gt;
	}// calss Spieler&lt;br /&gt;
}// class Wettbuero_2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Rennschnecke/Musterloesung&amp;diff=13690</id>
		<title>Javakurs/Übungsaufgaben/Rennschnecke/Musterloesung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/Rennschnecke/Musterloesung&amp;diff=13690"/>
		<updated>2010-03-24T13:53:27Z</updated>

		<summary type="html">&lt;p&gt;Andre: Die Seite wurde neu angelegt: „= Rennschnecke - Musterlösung =  == Rennschnecke.java ==   &amp;lt;nowiki&amp;gt; package Schneckenrennen;  import java.util.Random;  /**  * Eine Schnecke, welche an Rennen te...“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Rennschnecke - Musterlösung =&lt;br /&gt;
&lt;br /&gt;
== Rennschnecke.java ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
package Schneckenrennen;&lt;br /&gt;
&lt;br /&gt;
import java.util.Random;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Eine Schnecke, welche an Rennen teilnehmen kann.&lt;br /&gt;
 * @author André Schulz&lt;br /&gt;
 * @version 1.0&lt;br /&gt;
 */&lt;br /&gt;
public class Rennschnecke&lt;br /&gt;
{&lt;br /&gt;
	private String name;&lt;br /&gt;
	private String rasse;&lt;br /&gt;
	private double vMax;&lt;br /&gt;
	private double strecke;// zurückgelegte Strcke am Startpunkt&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Konstruktor für Schnecken.&lt;br /&gt;
	 * @param name Name der Schnecke&lt;br /&gt;
	 * @param rasse Rasse der Schnecke&lt;br /&gt;
	 * @param vMax Maximalgeschwindigkeit der Schnecke&lt;br /&gt;
	 */&lt;br /&gt;
	public Rennschnecke(String name, String rasse, double vMax)&lt;br /&gt;
	{&lt;br /&gt;
		this.name = name;&lt;br /&gt;
		this.rasse = rasse;&lt;br /&gt;
		this.vMax = vMax;&lt;br /&gt;
		this.strecke = 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Bewegt die Schnecke mit einer zufälligen Geschwindigkeit (im Abhängigkeit von der Maximalgeschwindigkeit).&lt;br /&gt;
	 */&lt;br /&gt;
	public void krieche()&lt;br /&gt;
	{&lt;br /&gt;
		Random random = new Random();&lt;br /&gt;
		// Mximalgeschwindigkeit wird mit 0,01..1 multipliziert&lt;br /&gt;
		this.strecke += vMax * (random.nextInt(100) + 1) / 100;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt den Namen der Schnecke zurück.&lt;br /&gt;
	 * @return Name&lt;br /&gt;
	 */&lt;br /&gt;
	public String getName()&lt;br /&gt;
	{&lt;br /&gt;
		return name;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt die Rasse der Schnecke zurück.&lt;br /&gt;
	 * @return Rasse&lt;br /&gt;
	 */&lt;br /&gt;
	public String getRasse()&lt;br /&gt;
	{&lt;br /&gt;
		return rasse;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt die Maximalgeschwindigkeit zurück.&lt;br /&gt;
	 * @return Maximalgeschwindigkeit&lt;br /&gt;
	 */&lt;br /&gt;
	public double getVMax()&lt;br /&gt;
	{&lt;br /&gt;
		return vMax;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt die bereits zurückgelegte Strecke zurück.&lt;br /&gt;
	 * @return zurückgelegt Strecke&lt;br /&gt;
	 */&lt;br /&gt;
	public double getStrecke()&lt;br /&gt;
	{&lt;br /&gt;
		return strecke;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public String toString()&lt;br /&gt;
	{&lt;br /&gt;
		return &amp;quot;(&amp;quot; + name + &amp;quot;.&amp;quot; + rasse + &amp;quot;:&amp;quot; + vMax + &amp;quot;@&amp;quot; + strecke + &amp;quot;)&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Main-Methode (nur zum Testen)&lt;br /&gt;
	 * @param args (keine)&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args)&lt;br /&gt;
	{&lt;br /&gt;
		Rennschnecke snail = new Rennschnecke(&amp;quot;andre&amp;quot;, &amp;quot;human&amp;quot;, 100);&lt;br /&gt;
		System.out.println(snail);&lt;br /&gt;
	}&lt;br /&gt;
}// class Rennschnecke&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== Rennen.java ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
package Schneckenrennen;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Iterator;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Ein Rennen, an dem Schnecken teilnehmen.&lt;br /&gt;
 * @author André Schulz&lt;br /&gt;
 * @version 1.0&lt;br /&gt;
 */&lt;br /&gt;
public class Rennen&lt;br /&gt;
{&lt;br /&gt;
	private String name;&lt;br /&gt;
	private ArrayList&amp;lt;Rennschnecke&amp;gt; schnecken;&lt;br /&gt;
	private double renndistanz;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Konstruktor für Schneckenrennen&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 3) &lt;br /&gt;
	 * @param name Name des Schneckenrennens&lt;br /&gt;
	 * @param renndistanz distance off the race&lt;br /&gt;
	 */&lt;br /&gt;
	public Rennen(String name, double renndistanz)&lt;br /&gt;
	{&lt;br /&gt;
		this.name = name;&lt;br /&gt;
		//leere ArrayList von Schnecken&lt;br /&gt;
		this.schnecken = new ArrayList&amp;lt;Rennschnecke&amp;gt;();&lt;br /&gt;
		this.renndistanz = renndistanz;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fügt eine Schnecke dem Rennen hinzu.&amp;lt;br&amp;gt;&lt;br /&gt;
	 *(Punkt 4)&lt;br /&gt;
	 * @param schnecke eine zum Rennen hinzuzufügende Schnecke&lt;br /&gt;
	 * @throws IllegalArgumentException wenn versucht wird eine Schnecke mehrmals hinzuzufügen&lt;br /&gt;
	 */&lt;br /&gt;
	public void addRennschnecke(Rennschnecke schnecke)&lt;br /&gt;
	{&lt;br /&gt;
		//überprüfen, ob die Schnecke schon am Rennen teilnimmt (Doppelteilnahme verhindern)&lt;br /&gt;
		//(Zustazpunkt 1)&lt;br /&gt;
		if (this.schnecken.contains(schnecke))&lt;br /&gt;
		{&lt;br /&gt;
			//Exception werfen, wenn die Schnecke schon am Rennen teilnimmt&lt;br /&gt;
			//=&amp;gt; muss ein Programmierfehler sein&lt;br /&gt;
			throw new IllegalArgumentException(&amp;quot;This snail is alredy at this race!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		this.schnecken.add(schnecke);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Entfernt eine Schnecke aus dem Rennen.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (entfernt alle Schnecken, die den jeweiligen Namen haben)&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 5)&lt;br /&gt;
	 * @param name Name der zu entfernende(n) Schnecke(n)&lt;br /&gt;
	 */&lt;br /&gt;
	public void removeRennschnecke(String name)&lt;br /&gt;
	{&lt;br /&gt;
		Rennschnecke schnecke;&lt;br /&gt;
		//Iterator um die ArrayList zu durchlaufen&lt;br /&gt;
		Iterator&amp;lt;Rennschnecke&amp;gt; iter = schnecken.iterator();&lt;br /&gt;
&lt;br /&gt;
		//solange es noch Elemente in der ArrayList gibt...&lt;br /&gt;
		while (iter.hasNext())&lt;br /&gt;
		{&lt;br /&gt;
			//...sich den nächsten Eintrag nehmen...&lt;br /&gt;
			schnecke = iter.next();&lt;br /&gt;
			&lt;br /&gt;
			//...und überprüfen ob der Name mit dem zu entfernenden Namen übereinstimmt...&lt;br /&gt;
			if (schnecke.getName().equals(name))&lt;br /&gt;
			{&lt;br /&gt;
				//...wenn, dann diesen Eintrag aus der ArrayList entfernen&lt;br /&gt;
				iter.remove();&lt;br /&gt;
			}// if&lt;br /&gt;
		}// while&lt;br /&gt;
	}// removeSnail&lt;br /&gt;
&lt;br /&gt;
	public String toString()&lt;br /&gt;
	{&lt;br /&gt;
		//(Punkt 6)&lt;br /&gt;
		&lt;br /&gt;
		//StringBuilder ist Classe um Strings zu &amp;quot;bauen&amp;quot;&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
		&lt;br /&gt;
		//Metadaten des Rennens (Name, Teilnehmeranzahl, Distanz)&lt;br /&gt;
		sb.append(this.name + &amp;quot;(&amp;quot; + this.schnecken.size() + &amp;quot;) :&amp;quot; + this.renndistanz + &amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		//die gesamte ArrayList durchlaufen und alle Schnecke hinzufügen&lt;br /&gt;
		for (Rennschnecke snail : this.schnecken)&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(snail);&lt;br /&gt;
			sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
		}// for&lt;br /&gt;
&lt;br /&gt;
		//wenn es einen Gewinner gibt&lt;br /&gt;
		if (this.getGewinner() != null)&lt;br /&gt;
		{&lt;br /&gt;
			//...dann wird er hinzugefügt&lt;br /&gt;
			sb.append(&amp;quot;Gewinner:&amp;quot;);&lt;br /&gt;
			sb.append(this.getGewinner());&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			//..ansonsten nicht&lt;br /&gt;
			sb.append(&amp;quot;Rennen noch nicht gestartet!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		//den gebauten String in eine echte Zeichenkette konvertieren&lt;br /&gt;
		return sb.toString();&lt;br /&gt;
	}// toString&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Methode liefert auch einen String, welcher das Rennen repräsentiert,&lt;br /&gt;
	 * doch ist der Aufbau etwas übersichtlicher. (tabellarisch)&lt;br /&gt;
	 * @return String-Repräsentation des Schneckenrennens&lt;br /&gt;
	 */&lt;br /&gt;
	public String getPrintString()&lt;br /&gt;
	{&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
		sb.append(&amp;quot;Rennen: '&amp;quot;);&lt;br /&gt;
		sb.append(this.name);&lt;br /&gt;
		sb.append(&amp;quot;' Teilnehmer: &amp;quot;);&lt;br /&gt;
		sb.append(this.schnecken.size());&lt;br /&gt;
		sb.append(&amp;quot; Distanz: &amp;quot;);&lt;br /&gt;
		sb.append(this.renndistanz);&lt;br /&gt;
		sb.append(&amp;quot;\nSchnecken:\n&amp;quot;);&lt;br /&gt;
		sb.append(&amp;quot;+Name\t+Rasse\t+vMax\t+Strecke\n&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		for (Rennschnecke snail : this.schnecken)&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(snail.getName());&lt;br /&gt;
			sb.append(&amp;quot;\t&amp;quot;);//zwischen den einzelnen Atributen der Schnecken wird ein TabStop eingefügt&lt;br /&gt;
			sb.append(snail.getRasse());&lt;br /&gt;
			sb.append(&amp;quot;\t&amp;quot;);&lt;br /&gt;
			sb.append(snail.getVMax());&lt;br /&gt;
			sb.append(&amp;quot;\t&amp;quot;);&lt;br /&gt;
			sb.append(snail.getStrecke());&lt;br /&gt;
			sb.append(&amp;quot;\t\n&amp;quot;);&lt;br /&gt;
		}// for&lt;br /&gt;
		&lt;br /&gt;
		if (this.getGewinner() != null)&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(&amp;quot;Gewinner:&amp;quot;);&lt;br /&gt;
			sb.append(this.getGewinner());&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(&amp;quot;Rennen noch nicht gestartet!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		return sb.toString();&lt;br /&gt;
	}//getPrintString&lt;br /&gt;
	&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt das Rennen tabellarisch auf der Konsole aus.&lt;br /&gt;
	 */&lt;br /&gt;
	public void print()&lt;br /&gt;
	{&lt;br /&gt;
		System.out.println(getPrintString());&lt;br /&gt;
	}// print&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt den Gewinner des Rennens zurück.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Gibt &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; zurück, wenn das Rennen noch nciht beendet wurde.)&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 8)&lt;br /&gt;
	 * @return Gewinner des Rennens&lt;br /&gt;
	 */&lt;br /&gt;
	public Rennschnecke getGewinner()&lt;br /&gt;
	{&lt;br /&gt;
		Rennschnecke gewinner = null;//bis jetzt ist noch keiner bekannt...&lt;br /&gt;
		&lt;br /&gt;
		//durchlaufe alle Schnecken...&lt;br /&gt;
		for (Rennschnecke schnecke : schnecken)&lt;br /&gt;
		{&lt;br /&gt;
			//...überprüfe ob eine die Renndistanz zurückgelegt hat&lt;br /&gt;
			if (schnecke.getStrecke() &amp;gt; this.renndistanz)&lt;br /&gt;
			{&lt;br /&gt;
				//wenn bisher noch kein gewinner ermittelt wurde...&lt;br /&gt;
				if (gewinner == null)&lt;br /&gt;
				{&lt;br /&gt;
					//...dann ist die Schnecke der gewinner&lt;br /&gt;
					gewinner = schnecke;&lt;br /&gt;
				}&lt;br /&gt;
				else&lt;br /&gt;
				{&lt;br /&gt;
					//...andernfalls ist die Schnecke welche weiter ist der Gewinner&lt;br /&gt;
					//(Zusatzpunkt 3)&lt;br /&gt;
					if (schnecke.getStrecke() &amp;gt; gewinner.getStrecke())&lt;br /&gt;
					{&lt;br /&gt;
						gewinner = schnecke;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}// if&lt;br /&gt;
		}// for&lt;br /&gt;
&lt;br /&gt;
		return gewinner;&lt;br /&gt;
	}//getWinner&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt alle Schnecken zurück.&lt;br /&gt;
	 * @return alle Schnecken&lt;br /&gt;
	 */&lt;br /&gt;
	public ArrayList&amp;lt;Rennschnecke&amp;gt; getSchnecken()&lt;br /&gt;
	{&lt;br /&gt;
		return this.schnecken;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt den Namen des Rennens zurück&lt;br /&gt;
	 * @return Rennname&lt;br /&gt;
	 */&lt;br /&gt;
	public String getName()&lt;br /&gt;
	{&lt;br /&gt;
		return this.name;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Lässt alle Schnecken ein mal kriechen.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 9) &lt;br /&gt;
	 */&lt;br /&gt;
	public void lasseSchneckenKriechen()&lt;br /&gt;
	{&lt;br /&gt;
		for (Rennschnecke snail : schnecken)&lt;br /&gt;
		{&lt;br /&gt;
			snail.krieche();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Führt das Rennen durch&amp;lt;br&amp;gt;&lt;br /&gt;
	 * Bewegt alle Schnecken so lange, bis eine im Zeil ist.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 10)&lt;br /&gt;
	 */&lt;br /&gt;
	public void durchfuehren()&lt;br /&gt;
	{&lt;br /&gt;
		System.out.println(&amp;quot;Rennen '&amp;quot; + this.name + &amp;quot;' wird durchgeführt...&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		//so lange es keinen Gewinner gibt...&lt;br /&gt;
		while (this.getGewinner() == null)&lt;br /&gt;
		{&lt;br /&gt;
			//...alle Schnecken ein mal kriechen lassen.&lt;br /&gt;
			this.lasseSchneckenKriechen();&lt;br /&gt;
		}// while&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Maim-Methode (nur zum Testen)&lt;br /&gt;
	 * @param args (keine)&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args)&lt;br /&gt;
	{&lt;br /&gt;
		Rennen testRennen = new Rennen(&amp;quot;Test&amp;quot;, 100000);&lt;br /&gt;
&lt;br /&gt;
		testRennen.addRennschnecke(new Rennschnecke(&amp;quot;andre&amp;quot;, &amp;quot;human&amp;quot;, 100));&lt;br /&gt;
		testRennen.addRennschnecke(new Rennschnecke(&amp;quot;klaus&amp;quot;, &amp;quot;human&amp;quot;, 90));&lt;br /&gt;
		testRennen.addRennschnecke(new Rennschnecke(&amp;quot;hans&amp;quot;, &amp;quot;human&amp;quot;, 75));&lt;br /&gt;
&lt;br /&gt;
		System.out.println(testRennen);&lt;br /&gt;
		&lt;br /&gt;
		testRennen.durchfuehren();&lt;br /&gt;
		System.out.println(testRennen);&lt;br /&gt;
	}&lt;br /&gt;
}// class Rennen&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== Wettbuero.java ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
package Schneckenrennen;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Wettbüro (einfache Version)&lt;br /&gt;
 * @author André Schulz&lt;br /&gt;
 * @version 1.0&lt;br /&gt;
 */&lt;br /&gt;
public class Wettbuero&lt;br /&gt;
{&lt;br /&gt;
	private Rennen rennen;&lt;br /&gt;
	private ArrayList&amp;lt;Wette&amp;gt; wetten;&lt;br /&gt;
	private double faktor;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Konstruktor für ein Wettbüro.&lt;br /&gt;
	 * @param rennen das Rennen, welches dieses Wettbüro betreuen soll&lt;br /&gt;
	 * @param faktor der Faktor, welcher bei gewinnen ausgezahlt wird&lt;br /&gt;
	 * @throws IllegalArgumentException wenn versucht wird einen negativen Wetteinsatz zu verwenden&lt;br /&gt;
	 */&lt;br /&gt;
	public Wettbuero(Rennen rennen, double faktor)&lt;br /&gt;
	{&lt;br /&gt;
		// wenn der Wetteinsatz negativ sein soll =&amp;gt; Fehler&lt;br /&gt;
		// (Zusatzpunkt 2)&lt;br /&gt;
		if (faktor &amp;lt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			throw new IllegalArgumentException(&amp;quot;Es dürfen keine Negativen Wetten abgeschlossen werden!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		this.rennen = rennen;&lt;br /&gt;
		this.faktor = faktor;&lt;br /&gt;
		this.wetten = new ArrayList&amp;lt;Wette&amp;gt;();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fügt eine Wette hinzu.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 2)&lt;br /&gt;
	 * @param schneckenname Name der Schnecke auf die gesetzt wird&lt;br /&gt;
	 * @param wetteinsatz der Wetteinsatz&lt;br /&gt;
	 * @param spielername Name des Spielers, welche doe Wette tätigt&lt;br /&gt;
	 */&lt;br /&gt;
	public void wetteAnnehmen(String schneckenname, double wetteinsatz, String spielername)&lt;br /&gt;
	{&lt;br /&gt;
		wetten.add(new Wette(schneckenname, wetteinsatz, spielername));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Führt das Rennen durch.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * (Punkt 3)&lt;br /&gt;
	 */&lt;br /&gt;
	public void rennenDurchfuehren()&lt;br /&gt;
	{&lt;br /&gt;
		this.rennen.durchfuehren();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public String toString()&lt;br /&gt;
	{&lt;br /&gt;
		// (Punkt 4)&lt;br /&gt;
&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
		// zu erst das Rennen ausgeben&lt;br /&gt;
		sb.append(&amp;quot;Renen:\n&amp;quot;);&lt;br /&gt;
		sb.append(this.rennen);&lt;br /&gt;
		sb.append(&amp;quot;Wetten:\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		// dann Wetten ausgeben, wenn vorhanden&lt;br /&gt;
		if (wetten.size() &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			for (Wette wette : this.wetten)&lt;br /&gt;
			{&lt;br /&gt;
				sb.append(wette);&lt;br /&gt;
				sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
			}// for&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(&amp;quot;(keine)&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return sb.toString();&lt;br /&gt;
	}// toString&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt das Wettbüro, mit dem dazugehörigen Rennen aus.&lt;br /&gt;
	 */&lt;br /&gt;
	public void print()&lt;br /&gt;
	{&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
		sb.append(&amp;quot;Wettbüro für:\n&amp;quot;);&lt;br /&gt;
		sb.append(this.rennen.getPrintString());&lt;br /&gt;
		sb.append(&amp;quot;Wetten:\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		if (wetten.size() &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			for (Wette bet : this.wetten)&lt;br /&gt;
			{&lt;br /&gt;
				sb.append(bet);&lt;br /&gt;
				sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
			}// for&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(&amp;quot;(keine)&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		System.out.println(sb.toString());&lt;br /&gt;
	}// print&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Main-Methode (nur zum Testen)&lt;br /&gt;
	 * @param args (keine)&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args)&lt;br /&gt;
	{&lt;br /&gt;
		Rennen rennen = new Rennen(&amp;quot;testRace&amp;quot;, 100000);&lt;br /&gt;
&lt;br /&gt;
		rennen.addRennschnecke(new Rennschnecke(&amp;quot;andre&amp;quot;, &amp;quot;human&amp;quot;, 100));&lt;br /&gt;
		rennen.addRennschnecke(new Rennschnecke(&amp;quot;klaus&amp;quot;, &amp;quot;human&amp;quot;, 90));&lt;br /&gt;
		rennen.addRennschnecke(new Rennschnecke(&amp;quot;hans&amp;quot;, &amp;quot;human&amp;quot;, 75));&lt;br /&gt;
&lt;br /&gt;
		Wettbuero wettbuero = new Wettbuero(rennen, 1.5);&lt;br /&gt;
&lt;br /&gt;
		// TODO Wetten hinzufügen&lt;br /&gt;
&lt;br /&gt;
		wettbuero.print();&lt;br /&gt;
&lt;br /&gt;
		wettbuero.rennenDurchfuehren();&lt;br /&gt;
&lt;br /&gt;
		wettbuero.print();&lt;br /&gt;
&lt;br /&gt;
	}// main&lt;br /&gt;
&lt;br /&gt;
	// ================================================================================&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Wette.&lt;br /&gt;
	 * @author André Schulz&lt;br /&gt;
	 * @version 1.0&lt;br /&gt;
	 */&lt;br /&gt;
	private class Wette&lt;br /&gt;
	{&lt;br /&gt;
		private String spielerName;&lt;br /&gt;
		private String schneckenName;&lt;br /&gt;
		private double wetteinsatz;&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Konstruktor erstellt eine neue Wette.&lt;br /&gt;
		 * @param schneckenName Name der Schnecke auf die gesetzt werden soll.&lt;br /&gt;
		 * @param wetteinsatz der Wetteinsatz für die Wette&lt;br /&gt;
		 * @param spielerName der Name des Spielers&lt;br /&gt;
		 */&lt;br /&gt;
		public Wette(String schneckenName, double wetteinsatz, String spielerName)&lt;br /&gt;
		{&lt;br /&gt;
			if (wetteinsatz &amp;lt; 0)&lt;br /&gt;
			{&lt;br /&gt;
				throw new IllegalArgumentException(&amp;quot;betAmount must be &amp;gt;=0!&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			this.spielerName = spielerName;&lt;br /&gt;
			this.schneckenName = schneckenName;&lt;br /&gt;
			this.wetteinsatz = wetteinsatz;&lt;br /&gt;
		}// Wette&lt;br /&gt;
&lt;br /&gt;
		public String toString()&lt;br /&gt;
		{&lt;br /&gt;
			return this.spielerName + &amp;quot;:&amp;quot; + this.wetteinsatz + &amp;quot;@&amp;quot; + this.schneckenName;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Gibt den Namen des Spielers dieser Wette zurück.&lt;br /&gt;
		 * @return Name des Spielers&lt;br /&gt;
		 */&lt;br /&gt;
		public String getSpielername()&lt;br /&gt;
		{&lt;br /&gt;
			return spielerName;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Gibt den Namen der Schnecke zurück, auf die gesetzt wurde.&lt;br /&gt;
		 * @return Name der Schnecke&lt;br /&gt;
		 */&lt;br /&gt;
		public String getSchneckenname()&lt;br /&gt;
		{&lt;br /&gt;
			return schneckenName;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Gibt den Wetteinsatz zurück.&lt;br /&gt;
		 * @return Wetteinsatz&lt;br /&gt;
		 */&lt;br /&gt;
		public double getWetteinsatz()&lt;br /&gt;
		{&lt;br /&gt;
			return wetteinsatz;&lt;br /&gt;
		}&lt;br /&gt;
	}// class Wette&lt;br /&gt;
}// class Wettbuero&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
=== Wettbuero_2.java ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
package Schneckenrennen;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Collections;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Wettbüro (verbesserte Version)&lt;br /&gt;
 * @author André Schulz&lt;br /&gt;
 * @version 2.0&lt;br /&gt;
 */&lt;br /&gt;
public class Wettbuero_2&lt;br /&gt;
{&lt;br /&gt;
	private Rennen rennen;&lt;br /&gt;
	private ArrayList&amp;lt;Spieler&amp;gt; spieler;&lt;br /&gt;
	private ArrayList&amp;lt;Wette&amp;gt; wetten;&lt;br /&gt;
	private double faktor;&lt;br /&gt;
	private Rennschnecke gewinner;&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Konstruktor für ein Wettbüro.&lt;br /&gt;
	 * @param rennen das Rennen, welches dieses Wettbüro betreuen soll&lt;br /&gt;
	 * @param faktor der Faktor, welcher bei gewinnen ausgezahlt wird&lt;br /&gt;
	 * @throws IllegalArgumentException wenn versucht wird einen negativen Wetteinsatz zu verwenden&lt;br /&gt;
	 */&lt;br /&gt;
	public Wettbuero_2(Rennen rennen, double faktor)&lt;br /&gt;
	{&lt;br /&gt;
		// wenn der Wetteinsatz negativ sein sollte =&amp;gt; Fehler&lt;br /&gt;
		// (Zusatzpunkt 2)&lt;br /&gt;
		if (faktor &amp;lt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			throw new IllegalArgumentException(&amp;quot;Es dürfen keine Negativen Wetten abgeschlossen werden!&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		this.rennen = rennen;&lt;br /&gt;
		this.faktor = faktor;&lt;br /&gt;
		this.spieler = new ArrayList&amp;lt;Spieler&amp;gt;();&lt;br /&gt;
		this.wetten = new ArrayList&amp;lt;Wette&amp;gt;();&lt;br /&gt;
	}// Wettbuero_2&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fügt dem Wettbüro einen neuen Spieler hinzu.&lt;br /&gt;
	 * @param spielerName der Name des Spielers&lt;br /&gt;
	 */&lt;br /&gt;
	public Spieler addSpieler(String spielerName)&lt;br /&gt;
	{&lt;br /&gt;
		// neunen Spieler erstellen&lt;br /&gt;
		Spieler spieler = new Spieler(spielerName);&lt;br /&gt;
&lt;br /&gt;
		// wenn der Spieler noch nicht vorhanden ist =&amp;gt; hinzufügen&lt;br /&gt;
		if (!this.spieler.contains(spieler))&lt;br /&gt;
		{&lt;br /&gt;
			this.spieler.add(spieler);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return spieler;&lt;br /&gt;
	}// addSpieler&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fügt eine Wette hinzu.&lt;br /&gt;
	 * @param schneckenName der Name der Schnecke, auf die gesetzt werden soll&lt;br /&gt;
	 * @param wetteinsatz der Wetteinsatz aud die Schnecke&lt;br /&gt;
	 * @param spielerName der Name des Spielers&lt;br /&gt;
	 */&lt;br /&gt;
	public void addWette(String schneckenName, double wetteinsatz, Spieler spieler)&lt;br /&gt;
	{&lt;br /&gt;
		for (Rennschnecke snail : this.rennen.getSchnecken())&lt;br /&gt;
		{&lt;br /&gt;
			if (snail.getName().equals(schneckenName))&lt;br /&gt;
			{&lt;br /&gt;
				wetten.add(new Wette(snail, wetteinsatz, spieler));&lt;br /&gt;
				return;&lt;br /&gt;
			}// if&lt;br /&gt;
		}// for&lt;br /&gt;
&lt;br /&gt;
		throw new IllegalArgumentException(&amp;quot;Eine Schnecke mit dem Namen '&amp;quot; + schneckenName + &amp;quot;' gibts in dem Rennen '&amp;quot; + this.rennen.getName() + &amp;quot; nicht!&amp;quot;);&lt;br /&gt;
	}// addWette&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Führt das Rennen durch.&lt;br /&gt;
	 */&lt;br /&gt;
	public void rennenDurchfuehren()&lt;br /&gt;
	{&lt;br /&gt;
		this.rennen.durchfuehren();&lt;br /&gt;
		this.gewinner = this.rennen.getGewinner();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public String toString()&lt;br /&gt;
	{&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
		sb.append(&amp;quot;Rennen:\n&amp;quot;);&lt;br /&gt;
		sb.append(this.rennen);&lt;br /&gt;
		sb.append(&amp;quot;Wetten:\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		if (wetten.size() &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			for (Wette bet : this.wetten)&lt;br /&gt;
			{&lt;br /&gt;
				sb.append(bet);&lt;br /&gt;
				sb.append(&amp;quot;\n&amp;quot;);&lt;br /&gt;
			}// for&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			sb.append(&amp;quot;(keine)&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return sb.toString();&lt;br /&gt;
	}// toString&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Methode wertet alle Wetten aus.&lt;br /&gt;
	 */&lt;br /&gt;
	public void wettenAuswerten()&lt;br /&gt;
	{&lt;br /&gt;
		for (Wette wette : this.wetten)&lt;br /&gt;
		{&lt;br /&gt;
			wette.setzeGewinn(this.gewinner, this.faktor);&lt;br /&gt;
		}&lt;br /&gt;
	}// wettenAuswerten&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Main-Mthode zum Testen.&lt;br /&gt;
	 * @param args (none)&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args)&lt;br /&gt;
	{&lt;br /&gt;
		// rennen erstellen&lt;br /&gt;
		Rennen race = new Rennen(&amp;quot;Testrennen&amp;quot;, 100000);&lt;br /&gt;
&lt;br /&gt;
		// Schnecken hinzufügen&lt;br /&gt;
		race.addRennschnecke(new Rennschnecke(&amp;quot;andre&amp;quot;, &amp;quot;Mensch&amp;quot;, 100));&lt;br /&gt;
		race.addRennschnecke(new Rennschnecke(&amp;quot;klaus&amp;quot;, &amp;quot;Mensch&amp;quot;, 90));&lt;br /&gt;
		race.addRennschnecke(new Rennschnecke(&amp;quot;hans&amp;quot;, &amp;quot;Mensch&amp;quot;, 75));&lt;br /&gt;
&lt;br /&gt;
		// Wettbüro erstellen&lt;br /&gt;
		Wettbuero_2 wettbuero = new Wettbuero_2(race, 1.5);&lt;br /&gt;
&lt;br /&gt;
		// Spieler erstellen&lt;br /&gt;
		Spieler spielerAndre = wettbuero.addSpieler(&amp;quot;andre&amp;quot;);&lt;br /&gt;
		Spieler spielerHans = wettbuero.addSpieler(&amp;quot;hans&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		// wetten setzen&lt;br /&gt;
		wettbuero.addWette(&amp;quot;andre&amp;quot;, 100, spielerAndre);&lt;br /&gt;
		wettbuero.addWette(&amp;quot;hans&amp;quot;, 100, spielerHans);&lt;br /&gt;
		wettbuero.addWette(&amp;quot;andre&amp;quot;, 10, spielerHans);&lt;br /&gt;
&lt;br /&gt;
		// Wettbüro ausgeben (vor dem Lauf)&lt;br /&gt;
		System.out.println(wettbuero);&lt;br /&gt;
&lt;br /&gt;
		// Rennen durchführen udn auswerten&lt;br /&gt;
		wettbuero.rennenDurchfuehren();&lt;br /&gt;
		wettbuero.wettenAuswerten();&lt;br /&gt;
&lt;br /&gt;
		// Wettbüro ausgeben (nach dem Lauf)&lt;br /&gt;
		System.out.println(wettbuero);&lt;br /&gt;
&lt;br /&gt;
		// zeigt die einzelnen Spieler&lt;br /&gt;
		System.out.println(&amp;quot;Spielerübersicht:&amp;quot;);&lt;br /&gt;
		wettbuero.zeigeSpieler();&lt;br /&gt;
	}// main&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Methode gibt alle Spieler mit ihren jeweiligen Wetten übersichtlich aus.&lt;br /&gt;
	 */&lt;br /&gt;
	public void zeigeSpieler()&lt;br /&gt;
	{&lt;br /&gt;
		// sortieren aller Wetten (nach Spielername)&lt;br /&gt;
		Collections.sort(this.wetten);&lt;br /&gt;
&lt;br /&gt;
		String oldSpielerName = &amp;quot;&amp;quot;;&lt;br /&gt;
		double wetteinsatz = 0;// Gesamtwetteinsatz eines Spielers&lt;br /&gt;
		double wettgewinn = 0;// Gesamtwettgewinn eines Spielers&lt;br /&gt;
&lt;br /&gt;
		System.out.println(&amp;quot;Spieler\tSchnecke\tEinsatz\tGewinn\tSaldo&amp;quot;);&lt;br /&gt;
		System.out.println(&amp;quot;================================================&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
		for (Wette wette : this.wetten)&lt;br /&gt;
		{&lt;br /&gt;
			if (wette.spieler.name == oldSpielerName)&lt;br /&gt;
			{&lt;br /&gt;
				System.out.println(&amp;quot;\t&amp;quot; + wette.schnecke.getRasse() + &amp;quot;.&amp;quot; + wette.schnecke.getName() + &amp;quot;\t&amp;quot; + wette.wetteinsatz + &amp;quot;\t&amp;quot; + wette.wettgewinn + &amp;quot;\t&amp;quot; + (wette.wettgewinn - wette.wetteinsatz));&lt;br /&gt;
&lt;br /&gt;
				wetteinsatz += wette.wetteinsatz;&lt;br /&gt;
				wettgewinn += wette.wettgewinn;&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				if (oldSpielerName != &amp;quot;&amp;quot;)&lt;br /&gt;
				{&lt;br /&gt;
					System.out.println(&amp;quot;\t\t\t------------------------&amp;quot;);&lt;br /&gt;
					System.out.println(&amp;quot;\t\t\t&amp;quot; + wetteinsatz + &amp;quot;\t&amp;quot; + wettgewinn + &amp;quot;\t&amp;quot; + (wettgewinn - wetteinsatz));&lt;br /&gt;
				}// if&lt;br /&gt;
&lt;br /&gt;
				System.out.println(wette.spieler.name);&lt;br /&gt;
				System.out.println(&amp;quot;\t&amp;quot; + wette.schnecke.getRasse() + &amp;quot;.&amp;quot; + wette.schnecke.getName() + &amp;quot;\t&amp;quot; + wette.wetteinsatz + &amp;quot;\t&amp;quot; + wette.wettgewinn + &amp;quot;\t&amp;quot; + (wette.wettgewinn - wette.wetteinsatz));&lt;br /&gt;
&lt;br /&gt;
				oldSpielerName = wette.spieler.name;&lt;br /&gt;
				wetteinsatz = wette.wetteinsatz;&lt;br /&gt;
				wettgewinn = wette.wettgewinn;&lt;br /&gt;
			}// else&lt;br /&gt;
		}// for&lt;br /&gt;
&lt;br /&gt;
		if (oldSpielerName != &amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
			System.out.println(&amp;quot;\t\t\t------------------------&amp;quot;);&lt;br /&gt;
			System.out.println(&amp;quot;\t\t\t&amp;quot; + wetteinsatz + &amp;quot;\t&amp;quot; + wettgewinn + &amp;quot;\t&amp;quot; + (wettgewinn - wetteinsatz));&lt;br /&gt;
		}// if&lt;br /&gt;
	}// zeigeSpieler&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Eine Wette.&lt;br /&gt;
	 */&lt;br /&gt;
	private class Wette implements Comparable&amp;lt;Wette&amp;gt;&lt;br /&gt;
	{&lt;br /&gt;
		private Spieler spieler;&lt;br /&gt;
		private Rennschnecke schnecke;&lt;br /&gt;
		private double wetteinsatz;&lt;br /&gt;
		private double wettgewinn;&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Konstruktor für wetten.&lt;br /&gt;
		 * @param schnecke die Schnecke&lt;br /&gt;
		 * @param wetteinsatz der Wetteinsatz&lt;br /&gt;
		 * @param spieler der Spieler der wettet&lt;br /&gt;
		 */&lt;br /&gt;
		public Wette(Rennschnecke schnecke, double wetteinsatz, Spieler spieler)&lt;br /&gt;
		{&lt;br /&gt;
			if (wetteinsatz &amp;lt; 0)&lt;br /&gt;
			{&lt;br /&gt;
				throw new IllegalArgumentException(&amp;quot;Wetteinsatz muss &amp;gt;=0 sein!&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			this.spieler = spieler;&lt;br /&gt;
			this.schnecke = schnecke;&lt;br /&gt;
			this.wetteinsatz = wetteinsatz;&lt;br /&gt;
			this.wettgewinn = -1;&lt;br /&gt;
		}// Wette&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Methode setzt in Abhängigkeit vom Gewinner den Wettgewinn.&lt;br /&gt;
		 * @param gewinner die Schnecke, welce das Rennen gewonnen hat&lt;br /&gt;
		 * @param faktor der Gewinnfaktor&lt;br /&gt;
		 */&lt;br /&gt;
		public void setzeGewinn(Rennschnecke gewinner, double faktor)&lt;br /&gt;
		{&lt;br /&gt;
			if (this.schnecke.equals(gewinner))&lt;br /&gt;
			{&lt;br /&gt;
				// auf Gewinner gesetzt =&amp;gt; Wettgewinn setzen&lt;br /&gt;
				this.wettgewinn = this.wetteinsatz * faktor;&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				// auf andere Schnecke gesetzt =&amp;gt; kein Gewinn&lt;br /&gt;
				this.wettgewinn = 0;&lt;br /&gt;
			}&lt;br /&gt;
		}// setzeGewinn&lt;br /&gt;
&lt;br /&gt;
		public String toString()&lt;br /&gt;
		{&lt;br /&gt;
			StringBuilder sb = new StringBuilder();&lt;br /&gt;
			sb.append(this.spieler);&lt;br /&gt;
			sb.append(&amp;quot;:&amp;quot;);&lt;br /&gt;
			sb.append(this.wetteinsatz);&lt;br /&gt;
			sb.append(&amp;quot;@&amp;quot;);&lt;br /&gt;
			sb.append(this.schnecke);&lt;br /&gt;
&lt;br /&gt;
			if (this.wettgewinn != -1)&lt;br /&gt;
			{&lt;br /&gt;
				sb.append(&amp;quot;-&amp;gt;&amp;quot;);&lt;br /&gt;
				sb.append(this.wettgewinn);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			return sb.toString();&lt;br /&gt;
		}// toString&lt;br /&gt;
&lt;br /&gt;
		@Override&lt;br /&gt;
		public int compareTo(Wette other)&lt;br /&gt;
		{&lt;br /&gt;
			return this.spieler.name.compareTo(other.spieler.name);&lt;br /&gt;
		}&lt;br /&gt;
	}// class Bet&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Ein Spieler welcher Wetten tätigt.&lt;br /&gt;
	 * @author André Schulz&lt;br /&gt;
	 * @version 1.0&lt;br /&gt;
	 */&lt;br /&gt;
	public class Spieler&lt;br /&gt;
	{&lt;br /&gt;
		private String name;&lt;br /&gt;
&lt;br /&gt;
		public Spieler(String name)&lt;br /&gt;
		{&lt;br /&gt;
			this.name = name;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		public String getName()&lt;br /&gt;
		{&lt;br /&gt;
			return this.name;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		public String toString()&lt;br /&gt;
		{&lt;br /&gt;
			return name;&lt;br /&gt;
		}&lt;br /&gt;
	}// calss Spieler&lt;br /&gt;
}// class Wettbuero&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/C%C3%A4sar-Chiffre/Musterloesung&amp;diff=13689</id>
		<title>Javakurs/Übungsaufgaben/Cäsar-Chiffre/Musterloesung</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/C%C3%A4sar-Chiffre/Musterloesung&amp;diff=13689"/>
		<updated>2010-03-24T13:38:16Z</updated>

		<summary type="html">&lt;p&gt;Andre: Die Seite wurde neu angelegt: „= Cäsar-Chiffre - Musterlösung =  Fas Verschlüsseln und Entschlüsseln wurde der Übersichtlichkeit halber in zwei Klassen aufgeteilt, welche eigenständig lau...“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Cäsar-Chiffre - Musterlösung =&lt;br /&gt;
&lt;br /&gt;
Fas Verschlüsseln und Entschlüsseln wurde der Übersichtlichkeit halber in zwei Klassen aufgeteilt, welche eigenständig lauffähig sind.&lt;br /&gt;
&lt;br /&gt;
== CaesarEncode.java (Cäsar-Verschlüsselung) ==&lt;br /&gt;
&lt;br /&gt;
Diese Klasse liest eine Datei ein, verschlüsselt sie und speichert sie anschließend.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
package caesar;&lt;br /&gt;
&lt;br /&gt;
import java.io.BufferedReader;&lt;br /&gt;
import java.io.BufferedWriter;&lt;br /&gt;
import java.io.FileReader;&lt;br /&gt;
import java.io.FileWriter;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Programm welches eine Textdatei mit der Caesar-Verschiebung verschlüsselt.&amp;lt;br&amp;gt;&lt;br /&gt;
 * Der Schluessel ist eine genze Zahl zwischen 0 und 26,&lt;br /&gt;
 * um die alle &amp;quot;normalen&amp;quot; Buchstaben verschoben werden.&amp;lt;br&amp;gt;&lt;br /&gt;
 * (nur &amp;lt;code&amp;gt;a..z&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;A..Z&amp;lt;/code&amp;gt;)&amp;lt;br&amp;gt;&lt;br /&gt;
 * Der Originaltext wird aus einer Datei eingelesen und&lt;br /&gt;
 * verschlüsselt in eine andere geschrieben.&amp;lt;br&amp;gt;&lt;br /&gt;
 * (eine vorhandene Datei wird dabei ueberschrieben)&amp;lt;br&amp;gt;&lt;br /&gt;
 * Parameterliste: Dateiname (Eingabe), Schluessel, Dateiname (Ausgabe)&lt;br /&gt;
 * @author André Schulz&lt;br /&gt;
 * @version 1.0 (3/2009)&lt;br /&gt;
 */&lt;br /&gt;
public class CaesarEncode&lt;br /&gt;
{&lt;br /&gt;
	/**&lt;br /&gt;
	 * Main-Methode fuehrt das Programm aus.&amp;lt;br&amp;gt;&lt;br /&gt;
	 * Programm verschiebt alle Buchstaben um &amp;lt;code&amp;gt;Schluessel&amp;lt;/code&amp;gt; (zwischen 0 und 26).&lt;br /&gt;
	 * @param args [Dateiname fuer Eingabe, Schluessel, Dateiname fuer Ausgabe]&lt;br /&gt;
	 * @throws IOException falls Fehler beim Lesen der Datei auftreten&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args) throws IOException&lt;br /&gt;
	{&lt;br /&gt;
		// bei falscher Argument-Länge wird die Parameterliste ausgegeben&lt;br /&gt;
		if (args.length != 3)&lt;br /&gt;
		{&lt;br /&gt;
			System.out.println(&amp;quot;params: &amp;lt;fileIn&amp;gt; &amp;lt;key&amp;gt; &amp;lt;fileOut&amp;gt;&amp;quot;);&lt;br /&gt;
			// beenden des Programms&lt;br /&gt;
			System.exit(0);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// ==++== lesen der Eingabedatei (Klartext)&lt;br /&gt;
		System.out.println(&amp;quot;reading&amp;quot;);// Fortschrittausgabe&lt;br /&gt;
		&lt;br /&gt;
		// erstellt Reader um aus Datei zu lesen&lt;br /&gt;
		BufferedReader br = new BufferedReader(new FileReader(args[0]));&lt;br /&gt;
		&lt;br /&gt;
		// liest eine Zeile aus der Datei ein&lt;br /&gt;
		String line = br.readLine();&lt;br /&gt;
		&lt;br /&gt;
		// Liste für die verschlüsselten Zeilen&lt;br /&gt;
		LinkedList&amp;lt;String&amp;gt; encodedLines = new LinkedList&amp;lt;String&amp;gt;();&lt;br /&gt;
		int key = -1;// initialisieren der Variable für die Verschiebung mit default-Wert&lt;br /&gt;
		&lt;br /&gt;
		// Ermitteln des Schluessels und Fehlerbehandlung&lt;br /&gt;
		try&lt;br /&gt;
		{&lt;br /&gt;
			// wandelt den String aus dem 2. Parameter in eine Zahl um&lt;br /&gt;
			key = Integer.parseInt(args[1]);&lt;br /&gt;
		}&lt;br /&gt;
		catch (NumberFormatException e)&lt;br /&gt;
		{&lt;br /&gt;
			// wenn der String nicht in eine ganze Zahl umgewandelt werden konnte&lt;br /&gt;
			// wird eine Fehlermeldung ausgegeben und beendet&lt;br /&gt;
			System.out.println(&amp;quot;could not parse key ('&amp;quot; + args[1] + &amp;quot;' is no number!)&amp;quot;);&lt;br /&gt;
			System.exit(0);&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// Ueberpruefung ob der Schluessel im gueltigen Bereich liegt&lt;br /&gt;
		if (key &amp;lt; 0 || key &amp;gt; 26)&lt;br /&gt;
		{&lt;br /&gt;
			// Fehlermeldung wenn Schluessel ausserhlab Bereich&lt;br /&gt;
			System.out.println(&amp;quot;key must be 0..26&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// es werden so lange Zeilen gelesen, wie vorhanden&lt;br /&gt;
		while (line != null)&lt;br /&gt;
		{&lt;br /&gt;
			// fuegt die verschluesselten Zeilen der Zeilen-Liste hinzu&lt;br /&gt;
			encodedLines.add(encode(line, key));&lt;br /&gt;
			line = br.readLine();// lesen der naechsten Zeile&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// schliesst den Reader, da nicht mehr benoetigt&lt;br /&gt;
		// (Datei ist wieder fuer andere Programme frei)&lt;br /&gt;
		br.close();&lt;br /&gt;
		// ==--== lesen der Eingabedatei (Klartext)&lt;br /&gt;
&lt;br /&gt;
		// ==++== schreiben der Ausgabedatei (verschluesselt)&lt;br /&gt;
		System.out.println(&amp;quot;writing output...&amp;quot;);// Fortschrittausgabe&lt;br /&gt;
		&lt;br /&gt;
		// erstellt Writer um in eine Datei zu schreiben (vorhandene wird ueberschrieben)&lt;br /&gt;
		BufferedWriter bw = new BufferedWriter(new FileWriter(args[2]));&lt;br /&gt;
&lt;br /&gt;
		// Schleife lauft ueber alle Elemente in der Zeilen-Liste&lt;br /&gt;
		for (String lineOut : encodedLines)&lt;br /&gt;
		{&lt;br /&gt;
			bw.write(lineOut);// schreibt aktuelle Zeile in Datei&lt;br /&gt;
			bw.write(&amp;quot;\n&amp;quot;);// schreibt Zeilenumbruch in Datei&lt;br /&gt;
			// bw.write(&amp;quot;\r\n&amp;quot;);//schreibt Zeilenumbruch in Datei (Windows-Version)&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// schliesst Writer, da nicht mehr benoetigt&lt;br /&gt;
		bw.close();&lt;br /&gt;
		// ==--== schreiben der Ausgabedatei (verschluesselt)&lt;br /&gt;
		&lt;br /&gt;
		System.out.println(&amp;quot;finsh&amp;quot;);// Fortschrittausgabe&lt;br /&gt;
	}// main&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Methode, welche einen String nach Caesar verschiebt.&lt;br /&gt;
	 * @param text Text der zu verschluesseln ist&lt;br /&gt;
	 * @param key Schluessel, um den Buchstaben verschoben werden sollen (0..26)&lt;br /&gt;
	 * @return verschluesselter Text&lt;br /&gt;
	 */&lt;br /&gt;
	private static String encode(String text, int key)&lt;br /&gt;
	{&lt;br /&gt;
		// erstellt neuen StringBuilder, um Ausgabe-String zu generieren&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
		int newC;// Code eines alten buchstaben&lt;br /&gt;
		int oldC;// Code des Buchstaben in neu&lt;br /&gt;
&lt;br /&gt;
		// Schleife durchlauft alle Zeichen&lt;br /&gt;
		while (!text.isEmpty())&lt;br /&gt;
		{&lt;br /&gt;
			// der erste Buchstabe wird gelesen&lt;br /&gt;
			newC = oldC = text.charAt(0);&lt;br /&gt;
&lt;br /&gt;
			// Ueberpruefung ob Zeichen ein Buchstabe ist,&lt;br /&gt;
			// dann wird umgewandelt (ansonsten bleibt Zeichen erhalten)&lt;br /&gt;
			if (oldC &amp;gt;= 'a' &amp;amp;&amp;amp; oldC &amp;lt;= 'z')&lt;br /&gt;
			{&lt;br /&gt;
				// Kleinbuchstabe&lt;br /&gt;
				newC = oldC + key;// Verschluesselung&lt;br /&gt;
&lt;br /&gt;
				if (newC &amp;gt; 'z')//Behandlung von Overflows&lt;br /&gt;
				{&lt;br /&gt;
					newC -= 26;// anpassen des Buchstaben&lt;br /&gt;
				}// if&lt;br /&gt;
			}&lt;br /&gt;
			else if (oldC &amp;gt;= 'A' &amp;amp;&amp;amp; oldC &amp;lt;= 'Z')&lt;br /&gt;
			{&lt;br /&gt;
				// Grossbuchstabe&lt;br /&gt;
				newC = oldC + key;// Verschluesselung&lt;br /&gt;
				&lt;br /&gt;
				if (newC &amp;gt; 'Z')//Behandlung von Overflows&lt;br /&gt;
				{&lt;br /&gt;
					newC -= 26;// anpassen des Buchstaben&lt;br /&gt;
				}// if&lt;br /&gt;
			}// if&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				// nix, da nur &amp;quot;normale&amp;quot; Buchstaben verschluesselt werden&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// das aktuelle Zeichen (der verschluesselte Buchstabe)&lt;br /&gt;
			//wird dem String hinzugefuegt&lt;br /&gt;
			sb.append((char) newC);&lt;br /&gt;
			&lt;br /&gt;
			// der momentane Text wird auf den Rest (one erstes Zeichen) gesetzt&lt;br /&gt;
			text = text.substring(1);&lt;br /&gt;
		}// while&lt;br /&gt;
&lt;br /&gt;
		return sb.toString();// verschluesselter String wird zurueckgegeben&lt;br /&gt;
	}// encode&lt;br /&gt;
}//classs&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CaesarEncode.java (Cäsar-Entschlüsselung) ==&lt;br /&gt;
&lt;br /&gt;
Diese Klasse entschlüsselt eine verschlüsselte Datei. Dazu gibt es zwei Möglichkeiten:&lt;br /&gt;
# man gibt den Schlüssel an nach dem entschlüsselt werden soll (wenn bekannt)&lt;br /&gt;
# man gibt keinen Schlüssel an und das Programm ermittelt den Schlüssel.&lt;br /&gt;
Bei beiden Versionen wird die entschlüsselte Datei anschließend gespeichert.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
package caesar;&lt;br /&gt;
&lt;br /&gt;
import java.io.BufferedReader;&lt;br /&gt;
import java.io.BufferedWriter;&lt;br /&gt;
import java.io.FileReader;&lt;br /&gt;
import java.io.FileWriter;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Programm welches eine mit der Caesar-Verschiebung verschlüsselte Textdatei entschluesselt.&amp;lt;br&amp;gt;&lt;br /&gt;
 * Der Schluessel wird entweder als Parameter uebergeben oder durch das Programm ermittelt.&amp;lt;br&amp;gt;&lt;br /&gt;
 * Bei der eigenstaendigen Ermittlung wird nach dem haefigsten Buchstaben gesucht,&lt;br /&gt;
 * welcher dann das &amp;lt;code&amp;gt;e&amp;lt;/code&amp;gt; sein muesste.&amp;lt;br&amp;gt;&lt;br /&gt;
 * Parameterliste:&amp;lt;br&amp;gt;&lt;br /&gt;
 * entweder: Dateiname (Eingabe), Schluessel, Dateiname (Ausgabe)&amp;lt;br&amp;gt;&lt;br /&gt;
 * oder: Dateiname (Eingabe), Dateiname (Ausgabe)&lt;br /&gt;
 * @author André Schulz&lt;br /&gt;
 * @version 1.0 (3/2009)&lt;br /&gt;
 */&lt;br /&gt;
public class CaesarDecode&lt;br /&gt;
{&lt;br /&gt;
	public static void main(String[] args) throws IOException&lt;br /&gt;
	{&lt;br /&gt;
		// Ueberpruefung ob Parameteranzahl falsch ist&lt;br /&gt;
		if (args.length &amp;lt; 2 || args.length &amp;gt; 3)&lt;br /&gt;
		{&lt;br /&gt;
			// Ausgabe der parameterliste und beenden des Programms&lt;br /&gt;
			System.out.println(&amp;quot;params: &amp;lt;fileIn&amp;gt; [&amp;lt;key&amp;gt;] &amp;lt;fileOut&amp;gt;&amp;quot;);&lt;br /&gt;
			System.exit(0);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		int key = -1;// Schluessel (Initialisierung mit default-Wert)&lt;br /&gt;
		String fileNameout;// Name der Ausgabedatei&lt;br /&gt;
		&lt;br /&gt;
		// erstellt Reader um aus verschluesselter Datei zu lesen&lt;br /&gt;
		BufferedReader br = new BufferedReader(new FileReader(args[0]));&lt;br /&gt;
		&lt;br /&gt;
		System.out.println(&amp;quot;reading&amp;quot;);// Fortschrittausgabe&lt;br /&gt;
		String line = br.readLine();// liest erste Zeile&lt;br /&gt;
		&lt;br /&gt;
		// Liste fuer die gelesenen Zeilen&lt;br /&gt;
		LinkedList&amp;lt;String&amp;gt; lines = new LinkedList&amp;lt;String&amp;gt;();&lt;br /&gt;
		&lt;br /&gt;
		// Schleife so lange, wie gelesene Zeilen Text enthalten&lt;br /&gt;
		while (line != null)&lt;br /&gt;
		{&lt;br /&gt;
			lines.add(line);// hinzufuegen der Zeile zur Liste&lt;br /&gt;
			line = br.readLine();// lesen der naechsten Zeile&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// Schliessen der Datei&lt;br /&gt;
		br.close();&lt;br /&gt;
&lt;br /&gt;
		// Auswahl je nach Parameteranzahl&lt;br /&gt;
		if (args.length == 3)&lt;br /&gt;
		{&lt;br /&gt;
			// 3 Parameter: Schluessel vom Benutzer gegeben&lt;br /&gt;
&lt;br /&gt;
			try&lt;br /&gt;
			{&lt;br /&gt;
				// wandelt den String aus dem 2. Parameter in eine Zahl um&lt;br /&gt;
				key = Integer.parseInt(args[1]);&lt;br /&gt;
			}&lt;br /&gt;
			catch (NumberFormatException e)&lt;br /&gt;
			{&lt;br /&gt;
				// wenn der String nicht in eine ganze Zahl umgewandelt werden konnte&lt;br /&gt;
				// wird eine Fehlermeldung ausgegeben und beendet&lt;br /&gt;
				System.out.println(&amp;quot;could not parse key ('&amp;quot; + args[1] + &amp;quot;' is no number!)&amp;quot;);&lt;br /&gt;
				System.exit(0);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// Ueberprueft Schluessel auf Gueltigkeit&lt;br /&gt;
			if (key &amp;lt; 0 || key &amp;gt; 26)&lt;br /&gt;
			{&lt;br /&gt;
				// Fehlerausgabe wenn ungueltig und beendung des Programms&lt;br /&gt;
				System.out.println(&amp;quot;key must be 0..26&amp;quot;);&lt;br /&gt;
				System.exit(0);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// setzt Dateiname fuer Ausgabe mit Wert aus 3. Parameter&lt;br /&gt;
			fileNameout = args[2];&lt;br /&gt;
		}&lt;br /&gt;
		else&lt;br /&gt;
		{&lt;br /&gt;
			// nicht 3 Parameter =&amp;gt; 2 Parameter&lt;br /&gt;
			// Schluessel ist niciht gegeben uns muss ermittelt werden&lt;br /&gt;
&lt;br /&gt;
			// Schluesselermittlung an Hand der gelesenen Zeilen&lt;br /&gt;
			key = determineKey(lines);&lt;br /&gt;
			fileNameout = args[1];// Dateiname fuer Ausgabe&lt;br /&gt;
			System.out.println(&amp;quot;key:&amp;quot; + key);// Ausgabe des gefundenen Schluessels&lt;br /&gt;
		}// else&lt;br /&gt;
&lt;br /&gt;
		System.out.println(&amp;quot;writing output...&amp;quot;);// Fortschrittausgabe&lt;br /&gt;
		&lt;br /&gt;
		// Writer zum Schreiben der entschluesselten Datei&lt;br /&gt;
		BufferedWriter bw = new BufferedWriter(new FileWriter(fileNameout));&lt;br /&gt;
&lt;br /&gt;
		// Schleife geht alle gelesenen Zeilen durch&lt;br /&gt;
		for (String lineOut : lines)&lt;br /&gt;
		{&lt;br /&gt;
			// jede Linie wird separat decodiert und dann in Datei geschrieben&lt;br /&gt;
			bw.write(decode(lineOut, key));&lt;br /&gt;
			bw.write(&amp;quot;\n&amp;quot;);// Zeilenumbruch&lt;br /&gt;
			// bw.write(&amp;quot;\r\n&amp;quot;);//schreibt Zeilenumbruch in Datei (Windows-Version)&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// Schliessen der Datei&lt;br /&gt;
		bw.close();&lt;br /&gt;
		System.out.println(&amp;quot;finsh&amp;quot;);// Fortschrittausgabe&lt;br /&gt;
	}// main&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Methode ermittelt den Schluessel an Hand des Textes.&lt;br /&gt;
	 * @param lines Text als Liste der Zeilen&lt;br /&gt;
	 * @return Schluessel mit dem verschluesselt wurde&lt;br /&gt;
	 */&lt;br /&gt;
	private static int determineKey(LinkedList&amp;lt;String&amp;gt; lines)&lt;br /&gt;
	{&lt;br /&gt;
		int i;// Zaehlvariable (wird mehr mahls verwendet)&lt;br /&gt;
		int[] lower = new int[26];// Array fuer Haufigkeit der Kleinbuchstaben&lt;br /&gt;
		int[] upper = new int[26];// Array fuer Haufigkeit der Grossbuchstaben&lt;br /&gt;
		char c;// aktuelles Zeichen&lt;br /&gt;
&lt;br /&gt;
		// ==++== Ermittlung der einzelnen Haeufigkeiten&lt;br /&gt;
		// Schleife durchlauft alle eingelesenen Zeilen&lt;br /&gt;
		for (String line : lines)&lt;br /&gt;
		{&lt;br /&gt;
			// Zeile wird Zeichen fuer Zeichen durchlaufen&lt;br /&gt;
			for (i = 0; i &amp;lt; line.length(); i++)&lt;br /&gt;
			{&lt;br /&gt;
				c = line.charAt(i);// Zeichen wird gelesen&lt;br /&gt;
&lt;br /&gt;
				// wenn Zeichen ein buchstabe ist, wird Stelle im Array incrementiert&lt;br /&gt;
				if (c &amp;gt;= 'a' &amp;amp;&amp;amp; c &amp;lt;= 'z')&lt;br /&gt;
				{&lt;br /&gt;
					// Kleinbuchstabe&lt;br /&gt;
					lower[c - 'a']++;&lt;br /&gt;
				}&lt;br /&gt;
				else if (c &amp;gt;= 'A' &amp;amp;&amp;amp; c &amp;lt;= 'Z')&lt;br /&gt;
				{&lt;br /&gt;
					// Grossbuchstabe&lt;br /&gt;
					upper[c - 'A']++;&lt;br /&gt;
				}&lt;br /&gt;
			}// for&lt;br /&gt;
		}// for&lt;br /&gt;
		// ==--== Ermittlung der einzelnen Haeufigkeiten&lt;br /&gt;
&lt;br /&gt;
		// Ausgabe der einzelnen Haeufigkeiten&lt;br /&gt;
		c = 'a';// angefangen bei &amp;quot;a&amp;quot;...&lt;br /&gt;
		for (i = 0; i &amp;lt; 26; i++)&lt;br /&gt;
		{&lt;br /&gt;
			// Ausgabe des Buchstaben und der Haeufigkeit bei Klein- und Grossbuchstaben&lt;br /&gt;
			System.out.println(c + &amp;quot;\t&amp;quot; + lower[i] + &amp;quot;\t&amp;quot; + upper[i]);&lt;br /&gt;
			c++;// weiter zum naechsten Buchstaben&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		//==++== Suche nach dem haeufigsten Buchstaben&lt;br /&gt;
		c = ' ';// default &amp;quot;Buchstabe&amp;quot;&lt;br /&gt;
		int max = -1;// groesste gefundene Haeufigkeit&lt;br /&gt;
		// Durchlaufen beider Arrays parallel&lt;br /&gt;
		for (i = 0; i &amp;lt; 26; i++)&lt;br /&gt;
		{&lt;br /&gt;
			// wenn aktueller Buchstabe haeufiger als anderer zuvor&lt;br /&gt;
			if (lower[i] + upper[i] &amp;gt; max)&lt;br /&gt;
			{&lt;br /&gt;
				// merken der groessten Haeufigkeit&lt;br /&gt;
				max = lower[i] + upper[i];&lt;br /&gt;
				&lt;br /&gt;
				// merken des Buchstaben&lt;br /&gt;
				c = (char) ('a' + i);// Rechnung mit Zeichen (z.B.: 'a'+2='c')&lt;br /&gt;
			}&lt;br /&gt;
		}// for&lt;br /&gt;
		//==--== Suche nach dem haeufigsten Buchstaben&lt;br /&gt;
&lt;br /&gt;
		// theoretisch steht jetzt in der Variable c der Buchstabe mit der&lt;br /&gt;
		// groessten Haeufigkeit im eingelesen Text, da bei deutschen Texten das 'e'&lt;br /&gt;
		// am Haeufigsten auftritt muss dies ein verschluesseltes 'e' sein&lt;br /&gt;
&lt;br /&gt;
		int key = c - 'e';// ausrechnen des Schluessels&lt;br /&gt;
		&lt;br /&gt;
		// anpassen des Schluessels bei einem Overflow&lt;br /&gt;
		if (key &amp;lt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			key += 26;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		return key;// ermittelter Schluessel wird zurueckgegeben&lt;br /&gt;
	}// countLetter&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Methode decodiert einen Text bei gegebenen Schluessel.&lt;br /&gt;
	 * @param text zu entschluesselnder Text&lt;br /&gt;
	 * @param key Schluessel, mit dem verschluesslt wurde&lt;br /&gt;
	 * @return entschluesselter Text&lt;br /&gt;
	 */&lt;br /&gt;
	private static String decode(String text, int key)&lt;br /&gt;
	{&lt;br /&gt;
		// neuer StringBuilder um Ausgabetext zu &amp;quot;bauen&amp;quot;&lt;br /&gt;
		StringBuilder sb = new StringBuilder();&lt;br /&gt;
&lt;br /&gt;
		int newC;// Code eines alten buchstaben&lt;br /&gt;
		int oldC;// Code des Buchstaben in neu&lt;br /&gt;
&lt;br /&gt;
		// Schleife so lange der Text noch Zeichen enthaelt&lt;br /&gt;
		while (!text.isEmpty())&lt;br /&gt;
		{&lt;br /&gt;
			// einlesen des ersten Zeichens&lt;br /&gt;
			newC = oldC = text.charAt(0);&lt;br /&gt;
&lt;br /&gt;
			// Ueberpruefung ob Zeichen ein normaler Buchstabe ist&lt;br /&gt;
			if (oldC &amp;gt;= 'a' &amp;amp;&amp;amp; oldC &amp;lt;= 'z')&lt;br /&gt;
			{&lt;br /&gt;
				// Kleinbuchstabe&lt;br /&gt;
				newC = oldC - key;// Entschluesselung&lt;br /&gt;
				&lt;br /&gt;
				if (newC &amp;lt; 'a')// Behandlung von Overflows&lt;br /&gt;
				{&lt;br /&gt;
					newC += 26;// anpassen des Buchstaben&lt;br /&gt;
				}// if&lt;br /&gt;
			}&lt;br /&gt;
			else if (oldC &amp;gt;= 'A' &amp;amp;&amp;amp; oldC &amp;lt;= 'Z')&lt;br /&gt;
			{&lt;br /&gt;
				// Grossbuchstabe&lt;br /&gt;
				newC = oldC - key;// Entschluesselung&lt;br /&gt;
				&lt;br /&gt;
				if (newC &amp;lt; 'A')// Behandlung von Overflows&lt;br /&gt;
				{&lt;br /&gt;
					newC += 26;// anpassen des Buchstaben&lt;br /&gt;
				}// if&lt;br /&gt;
			}// if&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				// nix, da nur &amp;quot;normale&amp;quot; Buchstaben verschluesselt werden&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// entschluesselter Buchstabe wird Text hinzugefuegt&lt;br /&gt;
			sb.append((char) newC);&lt;br /&gt;
			&lt;br /&gt;
			// der momentane Text wird auf den Rest (one erstes Zeichen) gesetzt&lt;br /&gt;
			text = text.substring(1);&lt;br /&gt;
		}// while&lt;br /&gt;
&lt;br /&gt;
		return sb.toString();// entschluesselter text wird zurueckgegeben&lt;br /&gt;
	}// encode&lt;br /&gt;
}//class&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Von_der_Konsole_zum_HelloWorld&amp;diff=12440</id>
		<title>C-Kurs/Von der Konsole zum HelloWorld</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/Von_der_Konsole_zum_HelloWorld&amp;diff=12440"/>
		<updated>2009-09-21T08:39:36Z</updated>

		<summary type="html">&lt;p&gt;Andre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Sollte das Arbeiten unter Unix neu für dich sein, dann nimm dir etwas Zeit, um dich mit den elementaren Konsolenkommandos vertraut zu machen. Erste Hilfe zu den Kommandos gibt es im Wiki unter [[Javakurs2007/Kommandohilfe | Kommandohilfe]].&lt;br /&gt;
# Starte ein Konsolenprogramm deiner Wahl.&lt;br /&gt;
# Lege dir ein Verzeichnis &amp;quot;Ckurs&amp;quot; an und kopiere die Vorgaben von [http://docs.freitagsrunde.org/Veranstaltungen/ckurs_2009/vorgaben/VonDerKonsoleZumHelloWorld.tar VonDerKonsoleZumHelloWorld.tar] an diesen Ort.&lt;br /&gt;
# Entpacke die Vorgaben, die sich nun in deinem Verzeichnis befinden. (Mit dem Befehl &amp;lt;code&amp;gt;tar -xf VonDerKonsoleZumHelloWorld.tar&amp;lt;/code&amp;gt; in einer Shell)&lt;br /&gt;
# Lösche im entstandenen Verzeichnis VonDerKonsoleZumHelloWorld/ die Datei WegMitDieserDatei und das Verzeichnis WegMitDiesemVerzeichnis.&lt;br /&gt;
# Benenne im selben Verzeichnis die Datei GibMirEinenNamen.txt in CompiliereMich.c um.&lt;br /&gt;
# Compiliere die soeben entstandene Datei CompiliereMich.c mit Hilfe von gcc CompiliereMich.c -o CompiliereMich.&lt;br /&gt;
# Führe das Programm in der entstandenen Datei CompiliereMich aus.&lt;br /&gt;
# Öffne einen Texteditor deiner Wahl. Schreibe ein Programm, das &amp;quot;HalloWelt&amp;quot; auf der Konsole ausgibt und teste es.&lt;/div&gt;</summary>
		<author><name>Andre</name></author>
		
	</entry>
</feed>