<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://ccwiki.digitalcampusvorarlberg.at/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Berna+K%C3%B6chle</id>
	<title>CCWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://ccwiki.digitalcampusvorarlberg.at/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Berna+K%C3%B6chle"/>
	<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php/Spezial:Beitr%C3%A4ge/Berna_K%C3%B6chle"/>
	<updated>2026-04-14T13:51:10Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/objektorientierte_Programmierung&amp;diff=2771</id>
		<title>DCV 2022 09/objektorientierte Programmierung</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/objektorientierte_Programmierung&amp;diff=2771"/>
		<updated>2022-10-25T06:45:57Z</updated>

		<summary type="html">&lt;p&gt;Berna Köchle: /* Aufgabe: Vector erstellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen diese Begriffe verstanden und angewandt werden. Diese sind nicht chronologisch geordnet.&lt;br /&gt;
 &#039;&#039;&#039;Tip:&#039;&#039;&#039; Für weitere Informationen: [[Objektorientierte_Programmierung|Objektorientierte Programmierung]]&lt;br /&gt;
* Klasse&lt;br /&gt;
** Instanz- vs. Klassenmethode&lt;br /&gt;
** Instanz- vs. Klassenattribut&lt;br /&gt;
** Innere Klassen (statisch vs. nicht statisch)&lt;br /&gt;
* Enumeration (enum)&lt;br /&gt;
* Collections (Liste, Set, Map)&lt;br /&gt;
* Vererbung&lt;br /&gt;
* Abstrakte Klasse&lt;br /&gt;
* Interface&lt;br /&gt;
* Polymorphismus&lt;br /&gt;
* Beziehungen&lt;br /&gt;
** Has-A vs. Is-A&lt;br /&gt;
** Implementierung von Interfaces&lt;br /&gt;
* Generics&lt;br /&gt;
* Designpatterns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Datenklasse ===&lt;br /&gt;
Es soll eine &#039;&#039;&#039;Methode&#039;&#039;&#039; erstellt werden, welche das &#039;&#039;&#039;kleinste&#039;&#039;&#039; und das &#039;&#039;&#039;größte Element&#039;&#039;&#039; sowie den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039; eines {{JSL|int[]}} ermittelt und zurückgibt. Alle  ermittelten Werten sollen in einem Datenobjekt zurückgegeben werden. Erstelle dazu eine Datenklasse welche die entsprechenden Werte enthält. Teste diese &#039;&#039;&#039;Methode&#039;&#039;&#039; ausgiebig mit verschiedenen {{JSL|int[]}}, verwende auch ein zufallsgeneriertes {{JSL|int[]}} mit negativen und positiven Werten.&lt;br /&gt;
* Erstelle die Datenklasse mit einem Sinnvollen Klassennamen und entsprechenden &#039;&#039;&#039;Attributen&#039;&#039;&#039;. Achte hierbei auch auf die Korrekte Sichtbarkeit&lt;br /&gt;
* Erstelle in in der Datenklasse einen &#039;&#039;&#039;Konstruktor&#039;&#039;&#039; welcher alle Werte entgegennimmt und erstelle &#039;&#039;&#039;getter&#039;&#039;&#039; für alle Werte&lt;br /&gt;
* Überschreibe die {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und erstelle einen schönen {{JSL|String}} mit den gegebenen Werten.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; welche die typischen Werte eines Menschen speichern kann.&lt;br /&gt;
* Größe&lt;br /&gt;
* Alter&lt;br /&gt;
* Name&lt;br /&gt;
* Gewicht&lt;br /&gt;
Erstelle weiters eine {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und erstelle einen schönen {{JSL|String}} mit den gegebenen Werten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Fotoapparat ===&lt;br /&gt;
Erstelle eine Fotoapparat &#039;&#039;&#039;Klasse&#039;&#039;&#039;.&lt;br /&gt;
* Mit zumindest folgenden Attributen (es dürfen auch gerne mehr sein), &#039;&#039;&#039;Brennweite min/max&#039;&#039;&#039;, &#039;&#039;&#039;Model&#039;&#039;&#039;, &#039;&#039;&#039;Hersteller&#039;&#039;&#039; und &#039;&#039;&#039;Megapixel&#039;&#039;&#039;.&lt;br /&gt;
* Erstelle für die Attribute &#039;&#039;&#039;getter&#039;&#039;&#039; und &#039;&#039;&#039;setter&#039;&#039;&#039;&lt;br /&gt;
* Erstelle weiters die &#039;&#039;&#039;Methode&#039;&#039;&#039; {{JSL|takePhoto()}}, die ein Foto schießt (Mach einfach eine nette Ausgabe)&lt;br /&gt;
* Überschreibe die {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und gib die relevanten Daten als {{JSL|String}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; der Fotoapparat &#039;&#039;&#039;Klasse&#039;&#039;&#039; und Teste diese ausgiebig.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Fotoapparat &amp;amp; Objektiv &amp;amp; Speicherkarte ===&lt;br /&gt;
Erweitere das vorhergehende Beispiel um die Klassen Objektiv und Speicherkarte. Die Brennweite der Kamera fällt demnach weg.&lt;br /&gt;
Das Objektiv und die Speicherkarte sollen getauscht werden können.&lt;br /&gt;
Erstelle Methoden um zu erfragen wieviele Fotos bereits aufgenommen wurden und wieviel Speicher noch frei ist. Für die Berechnung speicherplatz pro bild, kann ein wert von 0.3mb pro Megapixel angenommen werden.[https://www.mvorganizing.org/what-is-the-average-size-of-a-jpg/#What_is_the_average_size_of_a_JPG]&lt;br /&gt;
&lt;br /&gt;
== Handhabung von dynamischen Datenstrukturen (ArrayList, Vector, LinkedList, HashSet, HashMap) ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Vector erstellen ===&lt;br /&gt;
Erstelle einen Vector mit 20 Zufallszahlen zwischen 0 und 99.&lt;br /&gt;
&lt;br /&gt;
Gib den Vector mit {{JSL|System.out.println()}} aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Vector erstellen ===&lt;br /&gt;
Erstelle einen Vector mit 20 Zufallszahlen zwischen 0 und 99.&lt;br /&gt;
&lt;br /&gt;
Erstelle jeweils eine Funktionen für:&lt;br /&gt;
# Zählen der geraden Zahlen&lt;br /&gt;
# Suche nach der kleinsten Zahl&lt;br /&gt;
# Suche nach der größten Zahl&lt;br /&gt;
# Sortiere die Elementen absteigend&lt;br /&gt;
# Lösche alle Ungerade Zahlen&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Zwei Vectoren zusammenführen ===&lt;br /&gt;
Es gibt zwei Vectoren mit 20 Elementen, die nach Größe sortiert sind.&lt;br /&gt;
&lt;br /&gt;
Erstelle einen dritten Vector, in dem du die Elemente der vorhergehenden Vectoren zusammenfügst, der neu erstellte Vector soll immer noch sortiert sein.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person 2.0 ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; welche die typischen Werte eines Menschen speichern kann.&lt;br /&gt;
* Größe&lt;br /&gt;
* Alter&lt;br /&gt;
* Name&lt;br /&gt;
* Gewicht&lt;br /&gt;
Erstelle weiters eine Methode welche eine {{JSL|List}} von Personen erhält und bezüglich &#039;&#039;&#039;Größe&#039;&#039;&#039;, &#039;&#039;&#039;Alter&#039;&#039;&#039;, &#039;&#039;&#039;Gewicht&#039;&#039;&#039;, das &#039;&#039;&#039;kleinste&#039;&#039;&#039; und das &#039;&#039;&#039;größte Element&#039;&#039;&#039; sowie den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039; berechnet und wie in der vorhergehenden Aufgabe in einer eigenen Klasse zurückgibt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person Sortiert ===&lt;br /&gt;
Verwende die erstellte &#039;&#039;&#039;Klasse&#039;&#039;&#039; aus dem vorhergehenden Beispiel und erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; welche eine {{JSL|List}} von Personen nach entweder nach &#039;&#039;&#039;Größe&#039;&#039;&#039;, &#039;&#039;&#039;Alter&#039;&#039;&#039;, &#039;&#039;&#039;Gewicht&#039;&#039;&#039;, oder &#039;&#039;&#039;Name&#039;&#039;&#039; sortiert. Hierfür kann ein &#039;&#039;&#039;enum&#039;&#039;&#039; verwendet werden, oder auch einfach ein {{JSL|int}}.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Permutation&#039;&#039;&#039; ===&lt;br /&gt;
Erstelle eine Vector mit einzelnen Buchstaben. Zum Beispiel [&amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Implementiere den bekannten Permutationsalgorithmus, diesmal mit Hilfe von Vectoren.&lt;br /&gt;
&lt;br /&gt;
== Zoo-Simulation ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Zoo ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Main&#039;&#039;&#039; Klasse, die zuständig sind, für&lt;br /&gt;
* die Initialisierung von Zoo und alle deren Bestandteilen&lt;br /&gt;
* Initiieren des nächsten Simulationsschrittes&lt;br /&gt;
&lt;br /&gt;
Erstelle ein &#039;&#039;&#039;Zoo&#039;&#039;&#039; Klasse mit einer &#039;&#039;Name&#039;&#039; und &#039;&#039;Gründungsjahr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Gehege&#039;&#039;&#039; Klasse mit einer &#039;&#039;Name&#039;&#039; der als Beschreibung für die Gehege dient.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zoo, um Gehege dynamisch zufügen und entfernen zu können.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm mit einer Funktion: die Struktur der Zoo auszudrucken. Erwartete Ausdruck sieht folgenden Maß aus.&lt;br /&gt;
&lt;br /&gt;
{{BML|code= &lt;br /&gt;
├── Zoo: Tiergarten Dornbirn, gegründet 2022&lt;br /&gt;
│   ├── Gehege: Alpenwiese&lt;br /&gt;
│   ├── Gehege: Ried&lt;br /&gt;
│   ├── Gehege: Terrarium (warm)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Tiere ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm mit Tiere.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Tier&#039;&#039;&#039; Klasse mit einem &#039;&#039;Name&#039;&#039; und einer &#039;&#039;Gattung&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Erweitere die Gehege, um Tiere dynamisch zufügen und entfernen zu können.&lt;br /&gt;
&lt;br /&gt;
Erweitere den Struktur-Ausdruck von Zoo, dass es auch die Tiere ausdrückt.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
├── Zoo: Tiergarten Dornbirn, gegründet 2022&lt;br /&gt;
│   ├── Gehege: Alpenwiese&lt;br /&gt;
│       ├── Rijska, Kuh&lt;br /&gt;
│   ├── Gehege: Ried&lt;br /&gt;
│       ├── Garmond, Storh&lt;br /&gt;
│       ├── Hugo, Storh&lt;br /&gt;
│       ├── Idaxis, Storh&lt;br /&gt;
│   ├── Gehege: Terrarium (warm)&lt;br /&gt;
│       ├── (leer)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Tierfutter&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm mit Futter-Bedarfsanalyse.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Klasse für &#039;&#039;&#039;Futter&#039;&#039;&#039; mit einen &#039;&#039;Name&#039;&#039;, &#039;&#039;Einheit&#039;&#039; und &#039;&#039;Einheitspreis&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Jedes Tier hat einen Futterbedarf, die beinhaltet den &#039;&#039;Futter&#039;&#039; und eine &#039;&#039;Menge&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Statistik, was den Futterbedarf von Zoo ist, und wie viel die Tagesversorgung sich kostet. Für diese Aufgabe kann man {{JSL|HashMap}} gut brauchen.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Pfleger ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm mit Pfleger.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Klasse von &#039;&#039;&#039;Pfleger&#039;&#039;&#039; mit einem &#039;&#039;Name&#039;&#039; und mit einer dynamischen Liste von Gehegen &#039;&#039;aufgaben&#039;&#039;, wofür der Pfleger zuständig ist.&lt;br /&gt;
&lt;br /&gt;
Erweitere den Struktur-Ausdruck mit den neuen Pflegern.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Simulation 0.1 ===&lt;br /&gt;
&lt;br /&gt;
Erweitere das Programm mit einer Tagessimulation.&lt;br /&gt;
&lt;br /&gt;
# An jeden Tag, gehen die Pfleger los, und kümmern sich um die Gehege in deren Zuständigkeitsbereich.&lt;br /&gt;
## Falls ein Pfleger ein Gehege findet, welche schon bearbeitet wurde, überspringt die Gehege und nimmt der nächste&lt;br /&gt;
# Wenn ein Pfleger zu einem Gehege kommt, wird zuerst die Tiere füttern&lt;br /&gt;
# Nach dem Füttern wird er ein Zufälliges Tier länger beobachten.&lt;br /&gt;
## Mit einer Erweiterung der Pfleger mit den &#039;&#039;Lieblings-Tier-Gattung&#039;&#039;, kann der Pfleger auf das Tier bewundern.&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Simulation 0.2&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere die Simulation&lt;br /&gt;
&lt;br /&gt;
# Jedes Tier hat eine &#039;&#039;Gesundheit&#039;&#039;, ein &#039;&#039;MaxGesundheit&#039;&#039; und einen &#039;&#039;Biss&#039;&#039;&lt;br /&gt;
# Jedes Tier versucht mit 40% Wahrscheinlichkeit, ein Nachbar von ihm aus dem gleichen Gehege zu beißen.&lt;br /&gt;
# Falls ein Tier gebissen wird, wird seine Gesundheit mit dem Biss von Angreifer reduziert&lt;br /&gt;
# &amp;quot;toten Tiere&amp;quot; beißen nicht.&lt;br /&gt;
# Am Ende des Tages werden &amp;quot;toten Tiere&amp;quot; aus dem Gehege entfernt&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Simulation 0.3&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere den Zoo mit Tierärzte, die die verletzte Tiere behandeln und heilen. Erstelle eine Klasse &#039;&#039;&#039;TierArzt&#039;&#039;&#039; mit einem &#039;&#039;Name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Erweitere die Simulation&lt;br /&gt;
&lt;br /&gt;
# Jeder Tierarzt wird an jedem Tag - genau 1 Tier behandeln&lt;br /&gt;
# Der Tierarzt wählt das Tier mit der geringsten relativen Gesundheit&lt;br /&gt;
## Zum Beispiel: 10 Gesundheit mit 100 Maximum ist 10% und so dringender als 1 Gesundheit aus 2 ergo 50%.&lt;br /&gt;
# Der Tierarzt wird zufällig zwischen 30 und 100% der Gesundheit wiederherstellen&lt;br /&gt;
# Kein Tier kann über die maximale Gesundheit geboostet werden.&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
== Simulationen ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Carsimulation ===&lt;br /&gt;
Erstelle eine {{JSL|Car}} &#039;&#039;&#039;Klasse&#039;&#039;&#039;. Diese enthält alle gängigen Attribute die für ein Auto benötigt werden. Zumindest sollte die &#039;&#039;&#039;Klasse&#039;&#039;&#039; folgende Attribute enthalten:&lt;br /&gt;
* Hersteller&lt;br /&gt;
* Modell&lt;br /&gt;
* kW (Leistung)&lt;br /&gt;
* Tankinhalt&lt;br /&gt;
* Antriebsart (erstelle dafür eine Enumeration &#039;&#039;Benzin&#039;&#039;, &#039;&#039;Diesel&#039;&#039;, &#039;&#039;Gas&#039;&#039;, &#039;&#039;Strom&#039;&#039;)&lt;br /&gt;
* Gewicht&lt;br /&gt;
Überlege welche Attribute du im &#039;&#039;&#039;Konstruktor&#039;&#039;&#039; als Parameter erhalten willst. Ohne welche kann eine Auto &#039;&#039;&#039;Instanz&#039;&#039;&#039; nicht existieren?&lt;br /&gt;
Erstelle nun die &#039;&#039;&#039;Methode&#039;&#039;&#039; {{JSL|drive(int kilometer)}} welche einen {{JSL|int}} zurückgibt. Diese &#039;&#039;&#039;Methode&#039;&#039;&#039; soll, wenn es der Tankinhalt zulässt, die gegebene Strecke zurücklegen. Wenn der Tank leer ist, soll nur die Strecke zurückgegeben werden, die zurückgelegt werden konnte. Um den Verbrauch zu berechnen und den Tankinhalt zu reduzieren verwende das &#039;&#039;&#039;Gewicht&#039;&#039;&#039; und die &#039;&#039;&#039;kW (Leistung)&#039;&#039;&#039; des Autos.&lt;br /&gt;
&lt;br /&gt;
Wenn der Tank leer ist, soll der Tank über eine &#039;&#039;&#039;Methode&#039;&#039;&#039; mit einer gewissen Menge an Kraftstoff aufgefüllt werden. Erstelle dazu eine entsprechende &#039;&#039;&#039;Methode&#039;&#039;&#039; und fahr weiter.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun eine Carsimulation welche eine gewisse Anzahl von Autoinstanzen erstellt und diese fahren lässt und wenn nötig wieder betankt.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Wunsch:&#039;&#039;&#039; Die Methoden sollen zu ihrer eigentlichen Funktion auch eine schöne Ausgabe erstellen&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Carsimulation Extended ===&lt;br /&gt;
Erweitere das vorhergende Beispiel um die &#039;&#039;&#039;Klassen&#039;&#039;&#039;&lt;br /&gt;
* {{JSL|Engine}} (Motor)&lt;br /&gt;
* {{JSL|Tank}}&lt;br /&gt;
* {{JSL|GasStation}}&lt;br /&gt;
* {{JSL|RepairStation}}&lt;br /&gt;
Sowohl {{JSL|Tank}} und {{JSL|Motor}} sollen in {{JSL|Car}} als Attribute existieren und durch die {{JSL|RepairStation}} austauschbar sein.&lt;br /&gt;
&lt;br /&gt;
Eine {{JSL|Engine}} soll nach einer zufälligen Wahrscheinlichkeit einen Defekt haben und in der {{JSL|RepairStation}} getauscht werden. Je mehr Kilometer gefahren wurden, desto höher ist die Wahrscheinlichkeit, dass die {{JSL|Engine}} kaputt geht.&lt;br /&gt;
&lt;br /&gt;
Wenn die {{JSL|Car}} nicht die gewünschten Kilometer fährt, so ist entweder der Tank leer, oder der Motor kaputt. Erstelle &#039;&#039;&#039;Methoden&#039;&#039;&#039; der {{JSL|Car}} &#039;&#039;&#039;Klasse&#039;&#039;&#039; die den Tankinhalt und den Zustand des &#039;&#039;&#039;Motors&#039;&#039;&#039; (defekt oder ganz) zurückgeben.&lt;br /&gt;
&lt;br /&gt;
Wird die {{JSL|drive(int kilometers)}} &#039;&#039;&#039;Methode&#039;&#039;&#039; ausgeführt, so soll nun eine Methode im Motor aufgerufen werden, die diesen startet, und nach den gefahrenen Kilomtern wieder stoppt. Auch der Treibstoffverbrauch soll mit dem Motor zusammenhängen. Vielleicht ist es eine gute Idee beim Starten den Tank an den Motor zu übergeben?&lt;br /&gt;
&lt;br /&gt;
==== Erstelle folgende &#039;&#039;&#039;Subklassen&#039;&#039;&#039; von &#039;&#039;&#039;Tank&#039;&#039;&#039; ====&lt;br /&gt;
* Battery&lt;br /&gt;
* FuelTank&lt;br /&gt;
&lt;br /&gt;
 Überlege welche &#039;&#039;&#039;Methoden&#039;&#039;&#039; in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; &#039;&#039;&#039;Tank&#039;&#039;&#039; Sinn machen.&lt;br /&gt;
&lt;br /&gt;
==== Erstelle folgende &#039;&#039;&#039;Subklassen&#039;&#039;&#039; von &#039;&#039;&#039;Car&#039;&#039;&#039; ====&lt;br /&gt;
* SelfRepairingCar (hat der Motor einen Schaden, so soll dieser automatisch repariert und weitergefahren werden)&lt;br /&gt;
* AeroDynamicCar (reduziert den Treibstoffverbrauch um 50%)&lt;br /&gt;
* CrapCar (erhöht die Wahrscheinlichkeit dass der Motor kaputt geht um 50%)&lt;br /&gt;
&lt;br /&gt;
 Überlege welche &#039;&#039;&#039;Methoden&#039;&#039;&#039; in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; &#039;&#039;&#039;Car&#039;&#039;&#039; sinn machen. Eine eigene Methode in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; welche den Treibstoffverbrauch pro Kilometer ausrechnet, macht wahrscheinlich sinn. Diese kann dann in den &#039;&#039;&#039;Subklassen&#039;&#039;&#039; überschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Autosimulation ausgiebig.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bank ===&lt;br /&gt;
Ein Bankinstitut hat verschiedene Schalter. Ein Kunde geht in ein Bankinstitut um sein Bankgeschäft zu verrichten. Zuerst geht der Kunde ins Institut und geht zum nächsten freien Schalter. Wenn der Kunde den Schalter wieder verlässt, wird der Schalter zu einer Wahrscheinlichkeit von 20% für eine Pause geschlossen (die Pause eines Schalters endet nach dem 3 weitere Kunden die Bank betreten und verlassen haben). Hat ein Schalter kein Geld mehr so muss dieser wieder aufgefüllt werden und der Schalter ist für die Dauer eines Kunden geschlossen.&lt;br /&gt;
 * Das Bankgeschäft eines Kunden ist entweder eine Einzahlung bzw. eine Auszahlung.&lt;br /&gt;
 * Kann ein Schalter eine gewisse Geldmenge nicht bedienen geht der Kunde zum nächsten Schalter und der Ursprüngliche Schalter wird aufgefüllt.&lt;br /&gt;
 * Es soll nachvollzogen werden können welcher Schalter welche Kunden bedient hat und was für ein Betrag eingezahlt oder ausgezahlt wurde (&#039;&#039;&#039;ACHTUNG&#039;&#039;&#039; keine {{JSL|HashMap}}).&lt;br /&gt;
&lt;br /&gt;
# Erstelle ein UML Diagramm für dein Banksystem (Dia)&lt;br /&gt;
# Erstelle die notwendingen Klassen und Methoden.&lt;br /&gt;
# Erstelle nun eine Bank mit einigen Schaltern und erstelle weiters einige Kunden.&lt;br /&gt;
# Simuliere nun das Bankgeschäft. Die Kunden gehen der reihe nach in die Bank. Am Ende der Simulation soll für jeden Schalter eine Statistik ausgegeben werden (welche Kunden waren dort, welche Beträge wurden verarbeitet).&lt;br /&gt;
# Erstelle Unit Tests für deine Banksimulation&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal ===&lt;br /&gt;
 Das wurde schonmal gemacht, einfach nochmal machen, das schadet nicht :-)&lt;br /&gt;
Erstelle eine Methode welche durch das Dateisystem ab einem gegebenen Pfad navigiert (Ob der Pfad als {{JSL|String}} oder {{JSL|File}} übergeben wird ist egal). Wird der Pfad nicht gefunden, so soll eine {{JSL|FileNotFoundException}} geworfen werden. Die Navigation soll dabei &#039;&#039;&#039;Rekursiv&#039;&#039;&#039; erfolgen. Gib den Pfad mit entsprechender Einrückung aus.&lt;br /&gt;
 &#039;&#039;&#039;Tip zur Rekursion:&#039;&#039;&#039; Iteriere in einer Methode durch alle Kinder einer Datei. Handelt es sich um einen Ordner so rufe für jedes Kind dieses Ordners die Methode wieder auf und erhöhe die Einrückung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe (muss nicht genau so aussehen):&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
├── otherPackageInvocationTest&lt;br /&gt;
│   └── Test.java&lt;br /&gt;
├── week1&lt;br /&gt;
│   ├── tag3&lt;br /&gt;
│   │   ├── Aufgabe1.java&lt;br /&gt;
│   │   ├── Aufgabe2.java&lt;br /&gt;
│   │   └── Loops.java&lt;br /&gt;
│   ├── tag4&lt;br /&gt;
│   │   ├── Christbaum2.java&lt;br /&gt;
│   │   ├── Christbaum.java&lt;br /&gt;
│   │   ├── Loops.java&lt;br /&gt;
│   │   ├── Traingle2.java&lt;br /&gt;
│   │   └── Triangle.java&lt;br /&gt;
│   ├── tag5&lt;br /&gt;
│   │   ├── Circle2.java&lt;br /&gt;
│   │   ├── Circle3.java&lt;br /&gt;
│   │   ├── Circle.java&lt;br /&gt;
│   │   └── Methods.java&lt;br /&gt;
│   └── tag5a&lt;br /&gt;
│       └── UseMethods.java&lt;br /&gt;
├── week2&lt;br /&gt;
│   ├── day3&lt;br /&gt;
│   │   ├── Calendar.java&lt;br /&gt;
│   │   ├── LogicPuzzle.java&lt;br /&gt;
│   │   ├── Recursion2.java&lt;br /&gt;
│   │   └── Recursion.java&lt;br /&gt;
│   └── day4&lt;br /&gt;
│       ├── Menu.java&lt;br /&gt;
│       └── UserInput.java&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal usefull ===&lt;br /&gt;
Erstelle eine Methode welche durch das Dateisystem ab einem gegebenen Pfad navigiert. Die Methode erhält weiters eine Klasse {{JSL|FileReceiver}}. Diese Klasse hat eine Methode {{JSL|onFileReceived(int depth, File file)}} welche zur Verarbeitung jeder einzelnen Datei, bzw. jedes einzelnen Ordners aufgerufen wird. Erstelle verschiedene weitere Klassen die von {{JSL|FileReceiver}} erben und {{JSL|onFileReceived(int depth, File file)}} überschreiben und folgende Aufgaben erfüllen sollen:&lt;br /&gt;
* Größe aller Dateien berechnen&lt;br /&gt;
* Anzahl der Dateien mit einer bestimmten Endung zählen&lt;br /&gt;
* Alle Dateiendungen Zählen. Tip.: {{JSL|HashMap}}&lt;br /&gt;
* Die größe jedes Ordners ermitteln. Tip.: Hier wird die &#039;&#039;&#039;depth&#039;&#039;&#039; und ein Stapel benötigt ({{JSL|List}}, oder {{JSL|Stack}}).&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal usefull &amp;amp; extended ===&lt;br /&gt;
Wie in der vorhergehenden Aufgabe, jedoch soll nicht nur ein {{JSL|FileReceiver}} übergeben werden können, sondern eine {{JSL|List}} von {{JSL|FileReceiver}}.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: JUnit ===&lt;br /&gt;
Wähle drei Beispiele aus deiner Sammlung und teste diese mit &#039;&#039;&#039;JUnit&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Abstrakte Klasse&#039;&#039;&#039; {{JSL|Geometry}}. Diese enthält folgende &#039;&#039;&#039;Methoden&#039;&#039;&#039;:&lt;br /&gt;
* {{JSL|getCircumference()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
* {{JSL|getArea()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle nun einige &#039;&#039;&#039;Klassen&#039;&#039;&#039; die von {{JSL|Geometry}} erben (Circle, Square, Rectangle, Triangle,...). Jede &#039;&#039;&#039;Klasse&#039;&#039;&#039; soll in ihrem Konstruktor die entsprechenden Werte erhalten.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; von {{JSL|Geometry}}, speichere diese in einer {{JSL|List}}. Erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; die den Gesamtumfang und die Gesamtfläche aller {{JSL|Geometry}} &#039;&#039;&#039;Objekte&#039;&#039;&#039; in der {{JSL|List}} ausgibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Implementierung ausgibig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Verhalten ===&lt;br /&gt;
Wie in [[Protokoll#19._November_2021|Protokoll 19.11]] gezeigt, soll nun das &#039;&#039;&#039;Schwimmverhalten&#039;&#039;&#039; implementiert werden. Erstelle endweder die Bestehende Klassenhierarchie als Übung in deinem eigenen Paket, oder kopiere diese.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Graph === &lt;br /&gt;
&lt;br /&gt;
Ein Graph ist eine Datenstruktur die aus mehreren Knoten (Nodes besteht). Eine Node kann mehrere Nodes als Nachbarn haben, das heißt, sie hat eine Verbindung zu diesen Nachbarn.&lt;br /&gt;
[[Datei:Graph.png|mini|Ein einfacher Graph|150px]]&lt;br /&gt;
&lt;br /&gt;
* Erstelle eine Datenstruktur für die &#039;&#039;&#039;Node&#039;&#039;&#039; mit (X/Y Koordinaten), verwende für die Nachbarn eine {{JSL|List}} in der jeweiligen &#039;&#039;&#039;Node&#039;&#039;&#039;&lt;br /&gt;
* Erstelle weiters eine Datenstruktur für den Graphen, welche eine {{JSL|List}} von &#039;&#039;&#039;Nodes&#039;&#039;&#039; enthält&lt;br /&gt;
* Erstelle aus den schwarzen Pixeln des folgenden Labyrinths einen Graphen&lt;br /&gt;
&lt;br /&gt;
[[Datei:Labyrinth.png|150px|mini|none|Ein Labyrinth]]&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dijkstra ===&lt;br /&gt;
&lt;br /&gt;
Zeige deinen Graphen in einem {{JSL|JPanel}} an. Es soll nun der Start und das Ziel angeklickt werden können. Finde mittels Dijkstra Algorithmus[https://de.wikipedia.org/wiki/Dijkstra-Algorithmus] den kürzesten Weg vom Start zum Ziel. Illustriere dabei alle durchwanderten Knoten.&lt;/div&gt;</summary>
		<author><name>Berna Köchle</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/objektorientierte_Programmierung&amp;diff=2770</id>
		<title>DCV 2022 09/objektorientierte Programmierung</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/objektorientierte_Programmierung&amp;diff=2770"/>
		<updated>2022-10-25T06:45:31Z</updated>

		<summary type="html">&lt;p&gt;Berna Köchle: /* Aufgabe: Vector erstellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen diese Begriffe verstanden und angewandt werden. Diese sind nicht chronologisch geordnet.&lt;br /&gt;
 &#039;&#039;&#039;Tip:&#039;&#039;&#039; Für weitere Informationen: [[Objektorientierte_Programmierung|Objektorientierte Programmierung]]&lt;br /&gt;
* Klasse&lt;br /&gt;
** Instanz- vs. Klassenmethode&lt;br /&gt;
** Instanz- vs. Klassenattribut&lt;br /&gt;
** Innere Klassen (statisch vs. nicht statisch)&lt;br /&gt;
* Enumeration (enum)&lt;br /&gt;
* Collections (Liste, Set, Map)&lt;br /&gt;
* Vererbung&lt;br /&gt;
* Abstrakte Klasse&lt;br /&gt;
* Interface&lt;br /&gt;
* Polymorphismus&lt;br /&gt;
* Beziehungen&lt;br /&gt;
** Has-A vs. Is-A&lt;br /&gt;
** Implementierung von Interfaces&lt;br /&gt;
* Generics&lt;br /&gt;
* Designpatterns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Datenklasse ===&lt;br /&gt;
Es soll eine &#039;&#039;&#039;Methode&#039;&#039;&#039; erstellt werden, welche das &#039;&#039;&#039;kleinste&#039;&#039;&#039; und das &#039;&#039;&#039;größte Element&#039;&#039;&#039; sowie den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039; eines {{JSL|int[]}} ermittelt und zurückgibt. Alle  ermittelten Werten sollen in einem Datenobjekt zurückgegeben werden. Erstelle dazu eine Datenklasse welche die entsprechenden Werte enthält. Teste diese &#039;&#039;&#039;Methode&#039;&#039;&#039; ausgiebig mit verschiedenen {{JSL|int[]}}, verwende auch ein zufallsgeneriertes {{JSL|int[]}} mit negativen und positiven Werten.&lt;br /&gt;
* Erstelle die Datenklasse mit einem Sinnvollen Klassennamen und entsprechenden &#039;&#039;&#039;Attributen&#039;&#039;&#039;. Achte hierbei auch auf die Korrekte Sichtbarkeit&lt;br /&gt;
* Erstelle in in der Datenklasse einen &#039;&#039;&#039;Konstruktor&#039;&#039;&#039; welcher alle Werte entgegennimmt und erstelle &#039;&#039;&#039;getter&#039;&#039;&#039; für alle Werte&lt;br /&gt;
* Überschreibe die {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und erstelle einen schönen {{JSL|String}} mit den gegebenen Werten.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; welche die typischen Werte eines Menschen speichern kann.&lt;br /&gt;
* Größe&lt;br /&gt;
* Alter&lt;br /&gt;
* Name&lt;br /&gt;
* Gewicht&lt;br /&gt;
Erstelle weiters eine {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und erstelle einen schönen {{JSL|String}} mit den gegebenen Werten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Fotoapparat ===&lt;br /&gt;
Erstelle eine Fotoapparat &#039;&#039;&#039;Klasse&#039;&#039;&#039;.&lt;br /&gt;
* Mit zumindest folgenden Attributen (es dürfen auch gerne mehr sein), &#039;&#039;&#039;Brennweite min/max&#039;&#039;&#039;, &#039;&#039;&#039;Model&#039;&#039;&#039;, &#039;&#039;&#039;Hersteller&#039;&#039;&#039; und &#039;&#039;&#039;Megapixel&#039;&#039;&#039;.&lt;br /&gt;
* Erstelle für die Attribute &#039;&#039;&#039;getter&#039;&#039;&#039; und &#039;&#039;&#039;setter&#039;&#039;&#039;&lt;br /&gt;
* Erstelle weiters die &#039;&#039;&#039;Methode&#039;&#039;&#039; {{JSL|takePhoto()}}, die ein Foto schießt (Mach einfach eine nette Ausgabe)&lt;br /&gt;
* Überschreibe die {{JSL|toString()}} &#039;&#039;&#039;Methode&#039;&#039;&#039; und gib die relevanten Daten als {{JSL|String}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; der Fotoapparat &#039;&#039;&#039;Klasse&#039;&#039;&#039; und Teste diese ausgiebig.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Fotoapparat &amp;amp; Objektiv &amp;amp; Speicherkarte ===&lt;br /&gt;
Erweitere das vorhergehende Beispiel um die Klassen Objektiv und Speicherkarte. Die Brennweite der Kamera fällt demnach weg.&lt;br /&gt;
Das Objektiv und die Speicherkarte sollen getauscht werden können.&lt;br /&gt;
Erstelle Methoden um zu erfragen wieviele Fotos bereits aufgenommen wurden und wieviel Speicher noch frei ist. Für die Berechnung speicherplatz pro bild, kann ein wert von 0.3mb pro Megapixel angenommen werden.[https://www.mvorganizing.org/what-is-the-average-size-of-a-jpg/#What_is_the_average_size_of_a_JPG]&lt;br /&gt;
&lt;br /&gt;
== Handhabung von dynamischen Datenstrukturen (ArrayList, Vector, LinkedList, HashSet, HashMap) ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Vector erstellen ===&lt;br /&gt;
Erstelle einen Vector mit 20 Zufallszahlen zwischen 0 und 99.&lt;br /&gt;
&lt;br /&gt;
Gib den Vector mit {{JSL|System.out.println()}} aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Vector erstellen ===&lt;br /&gt;
Erstelle einen Vector 20 mit Zufallszahlen zwischen 0 und 99.&lt;br /&gt;
&lt;br /&gt;
Erstelle jeweils eine Funktionen für:&lt;br /&gt;
# Zählen der geraden Zahlen&lt;br /&gt;
# Suche nach der kleinsten Zahl&lt;br /&gt;
# Suche nach der größten Zahl&lt;br /&gt;
# Sortiere die Elementen absteigend&lt;br /&gt;
# Lösche alle Ungerade Zahlen&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Zwei Vectoren zusammenführen ===&lt;br /&gt;
Es gibt zwei Vectoren mit 20 Elementen, die nach Größe sortiert sind.&lt;br /&gt;
&lt;br /&gt;
Erstelle einen dritten Vector, in dem du die Elemente der vorhergehenden Vectoren zusammenfügst, der neu erstellte Vector soll immer noch sortiert sein.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person 2.0 ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; welche die typischen Werte eines Menschen speichern kann.&lt;br /&gt;
* Größe&lt;br /&gt;
* Alter&lt;br /&gt;
* Name&lt;br /&gt;
* Gewicht&lt;br /&gt;
Erstelle weiters eine Methode welche eine {{JSL|List}} von Personen erhält und bezüglich &#039;&#039;&#039;Größe&#039;&#039;&#039;, &#039;&#039;&#039;Alter&#039;&#039;&#039;, &#039;&#039;&#039;Gewicht&#039;&#039;&#039;, das &#039;&#039;&#039;kleinste&#039;&#039;&#039; und das &#039;&#039;&#039;größte Element&#039;&#039;&#039; sowie den &#039;&#039;&#039;Durchschnitt&#039;&#039;&#039; berechnet und wie in der vorhergehenden Aufgabe in einer eigenen Klasse zurückgibt.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Person Sortiert ===&lt;br /&gt;
Verwende die erstellte &#039;&#039;&#039;Klasse&#039;&#039;&#039; aus dem vorhergehenden Beispiel und erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; welche eine {{JSL|List}} von Personen nach entweder nach &#039;&#039;&#039;Größe&#039;&#039;&#039;, &#039;&#039;&#039;Alter&#039;&#039;&#039;, &#039;&#039;&#039;Gewicht&#039;&#039;&#039;, oder &#039;&#039;&#039;Name&#039;&#039;&#039; sortiert. Hierfür kann ein &#039;&#039;&#039;enum&#039;&#039;&#039; verwendet werden, oder auch einfach ein {{JSL|int}}.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Permutation&#039;&#039;&#039; ===&lt;br /&gt;
Erstelle eine Vector mit einzelnen Buchstaben. Zum Beispiel [&amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Implementiere den bekannten Permutationsalgorithmus, diesmal mit Hilfe von Vectoren.&lt;br /&gt;
&lt;br /&gt;
== Zoo-Simulation ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Zoo ===&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Main&#039;&#039;&#039; Klasse, die zuständig sind, für&lt;br /&gt;
* die Initialisierung von Zoo und alle deren Bestandteilen&lt;br /&gt;
* Initiieren des nächsten Simulationsschrittes&lt;br /&gt;
&lt;br /&gt;
Erstelle ein &#039;&#039;&#039;Zoo&#039;&#039;&#039; Klasse mit einer &#039;&#039;Name&#039;&#039; und &#039;&#039;Gründungsjahr&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Gehege&#039;&#039;&#039; Klasse mit einer &#039;&#039;Name&#039;&#039; der als Beschreibung für die Gehege dient.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zoo, um Gehege dynamisch zufügen und entfernen zu können.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm mit einer Funktion: die Struktur der Zoo auszudrucken. Erwartete Ausdruck sieht folgenden Maß aus.&lt;br /&gt;
&lt;br /&gt;
{{BML|code= &lt;br /&gt;
├── Zoo: Tiergarten Dornbirn, gegründet 2022&lt;br /&gt;
│   ├── Gehege: Alpenwiese&lt;br /&gt;
│   ├── Gehege: Ried&lt;br /&gt;
│   ├── Gehege: Terrarium (warm)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Tiere ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm mit Tiere.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Tier&#039;&#039;&#039; Klasse mit einem &#039;&#039;Name&#039;&#039; und einer &#039;&#039;Gattung&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Erweitere die Gehege, um Tiere dynamisch zufügen und entfernen zu können.&lt;br /&gt;
&lt;br /&gt;
Erweitere den Struktur-Ausdruck von Zoo, dass es auch die Tiere ausdrückt.&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
├── Zoo: Tiergarten Dornbirn, gegründet 2022&lt;br /&gt;
│   ├── Gehege: Alpenwiese&lt;br /&gt;
│       ├── Rijska, Kuh&lt;br /&gt;
│   ├── Gehege: Ried&lt;br /&gt;
│       ├── Garmond, Storh&lt;br /&gt;
│       ├── Hugo, Storh&lt;br /&gt;
│       ├── Idaxis, Storh&lt;br /&gt;
│   ├── Gehege: Terrarium (warm)&lt;br /&gt;
│       ├── (leer)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Tierfutter&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm mit Futter-Bedarfsanalyse.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Klasse für &#039;&#039;&#039;Futter&#039;&#039;&#039; mit einen &#039;&#039;Name&#039;&#039;, &#039;&#039;Einheit&#039;&#039; und &#039;&#039;Einheitspreis&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Jedes Tier hat einen Futterbedarf, die beinhaltet den &#039;&#039;Futter&#039;&#039; und eine &#039;&#039;Menge&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Statistik, was den Futterbedarf von Zoo ist, und wie viel die Tagesversorgung sich kostet. Für diese Aufgabe kann man {{JSL|HashMap}} gut brauchen.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Pfleger ===&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Zooprogramm mit Pfleger.&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Klasse von &#039;&#039;&#039;Pfleger&#039;&#039;&#039; mit einem &#039;&#039;Name&#039;&#039; und mit einer dynamischen Liste von Gehegen &#039;&#039;aufgaben&#039;&#039;, wofür der Pfleger zuständig ist.&lt;br /&gt;
&lt;br /&gt;
Erweitere den Struktur-Ausdruck mit den neuen Pflegern.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Simulation 0.1 ===&lt;br /&gt;
&lt;br /&gt;
Erweitere das Programm mit einer Tagessimulation.&lt;br /&gt;
&lt;br /&gt;
# An jeden Tag, gehen die Pfleger los, und kümmern sich um die Gehege in deren Zuständigkeitsbereich.&lt;br /&gt;
## Falls ein Pfleger ein Gehege findet, welche schon bearbeitet wurde, überspringt die Gehege und nimmt der nächste&lt;br /&gt;
# Wenn ein Pfleger zu einem Gehege kommt, wird zuerst die Tiere füttern&lt;br /&gt;
# Nach dem Füttern wird er ein Zufälliges Tier länger beobachten.&lt;br /&gt;
## Mit einer Erweiterung der Pfleger mit den &#039;&#039;Lieblings-Tier-Gattung&#039;&#039;, kann der Pfleger auf das Tier bewundern.&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Simulation 0.2&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere die Simulation&lt;br /&gt;
&lt;br /&gt;
# Jedes Tier hat eine &#039;&#039;Gesundheit&#039;&#039;, ein &#039;&#039;MaxGesundheit&#039;&#039; und einen &#039;&#039;Biss&#039;&#039;&lt;br /&gt;
# Jedes Tier versucht mit 40% Wahrscheinlichkeit, ein Nachbar von ihm aus dem gleichen Gehege zu beißen.&lt;br /&gt;
# Falls ein Tier gebissen wird, wird seine Gesundheit mit dem Biss von Angreifer reduziert&lt;br /&gt;
# &amp;quot;toten Tiere&amp;quot; beißen nicht.&lt;br /&gt;
# Am Ende des Tages werden &amp;quot;toten Tiere&amp;quot; aus dem Gehege entfernt&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Bonusaufgabe: Simulation 0.3&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Erweitere den Zoo mit Tierärzte, die die verletzte Tiere behandeln und heilen. Erstelle eine Klasse &#039;&#039;&#039;TierArzt&#039;&#039;&#039; mit einem &#039;&#039;Name&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Erweitere die Simulation&lt;br /&gt;
&lt;br /&gt;
# Jeder Tierarzt wird an jedem Tag - genau 1 Tier behandeln&lt;br /&gt;
# Der Tierarzt wählt das Tier mit der geringsten relativen Gesundheit&lt;br /&gt;
## Zum Beispiel: 10 Gesundheit mit 100 Maximum ist 10% und so dringender als 1 Gesundheit aus 2 ergo 50%.&lt;br /&gt;
# Der Tierarzt wird zufällig zwischen 30 und 100% der Gesundheit wiederherstellen&lt;br /&gt;
# Kein Tier kann über die maximale Gesundheit geboostet werden.&lt;br /&gt;
&lt;br /&gt;
Lass auf der Konsole ausdrucken, wer-was macht...&lt;br /&gt;
&lt;br /&gt;
== Simulationen ==&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Carsimulation ===&lt;br /&gt;
Erstelle eine {{JSL|Car}} &#039;&#039;&#039;Klasse&#039;&#039;&#039;. Diese enthält alle gängigen Attribute die für ein Auto benötigt werden. Zumindest sollte die &#039;&#039;&#039;Klasse&#039;&#039;&#039; folgende Attribute enthalten:&lt;br /&gt;
* Hersteller&lt;br /&gt;
* Modell&lt;br /&gt;
* kW (Leistung)&lt;br /&gt;
* Tankinhalt&lt;br /&gt;
* Antriebsart (erstelle dafür eine Enumeration &#039;&#039;Benzin&#039;&#039;, &#039;&#039;Diesel&#039;&#039;, &#039;&#039;Gas&#039;&#039;, &#039;&#039;Strom&#039;&#039;)&lt;br /&gt;
* Gewicht&lt;br /&gt;
Überlege welche Attribute du im &#039;&#039;&#039;Konstruktor&#039;&#039;&#039; als Parameter erhalten willst. Ohne welche kann eine Auto &#039;&#039;&#039;Instanz&#039;&#039;&#039; nicht existieren?&lt;br /&gt;
Erstelle nun die &#039;&#039;&#039;Methode&#039;&#039;&#039; {{JSL|drive(int kilometer)}} welche einen {{JSL|int}} zurückgibt. Diese &#039;&#039;&#039;Methode&#039;&#039;&#039; soll, wenn es der Tankinhalt zulässt, die gegebene Strecke zurücklegen. Wenn der Tank leer ist, soll nur die Strecke zurückgegeben werden, die zurückgelegt werden konnte. Um den Verbrauch zu berechnen und den Tankinhalt zu reduzieren verwende das &#039;&#039;&#039;Gewicht&#039;&#039;&#039; und die &#039;&#039;&#039;kW (Leistung)&#039;&#039;&#039; des Autos.&lt;br /&gt;
&lt;br /&gt;
Wenn der Tank leer ist, soll der Tank über eine &#039;&#039;&#039;Methode&#039;&#039;&#039; mit einer gewissen Menge an Kraftstoff aufgefüllt werden. Erstelle dazu eine entsprechende &#039;&#039;&#039;Methode&#039;&#039;&#039; und fahr weiter.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun eine Carsimulation welche eine gewisse Anzahl von Autoinstanzen erstellt und diese fahren lässt und wenn nötig wieder betankt.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;Wunsch:&#039;&#039;&#039; Die Methoden sollen zu ihrer eigentlichen Funktion auch eine schöne Ausgabe erstellen&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Carsimulation Extended ===&lt;br /&gt;
Erweitere das vorhergende Beispiel um die &#039;&#039;&#039;Klassen&#039;&#039;&#039;&lt;br /&gt;
* {{JSL|Engine}} (Motor)&lt;br /&gt;
* {{JSL|Tank}}&lt;br /&gt;
* {{JSL|GasStation}}&lt;br /&gt;
* {{JSL|RepairStation}}&lt;br /&gt;
Sowohl {{JSL|Tank}} und {{JSL|Motor}} sollen in {{JSL|Car}} als Attribute existieren und durch die {{JSL|RepairStation}} austauschbar sein.&lt;br /&gt;
&lt;br /&gt;
Eine {{JSL|Engine}} soll nach einer zufälligen Wahrscheinlichkeit einen Defekt haben und in der {{JSL|RepairStation}} getauscht werden. Je mehr Kilometer gefahren wurden, desto höher ist die Wahrscheinlichkeit, dass die {{JSL|Engine}} kaputt geht.&lt;br /&gt;
&lt;br /&gt;
Wenn die {{JSL|Car}} nicht die gewünschten Kilometer fährt, so ist entweder der Tank leer, oder der Motor kaputt. Erstelle &#039;&#039;&#039;Methoden&#039;&#039;&#039; der {{JSL|Car}} &#039;&#039;&#039;Klasse&#039;&#039;&#039; die den Tankinhalt und den Zustand des &#039;&#039;&#039;Motors&#039;&#039;&#039; (defekt oder ganz) zurückgeben.&lt;br /&gt;
&lt;br /&gt;
Wird die {{JSL|drive(int kilometers)}} &#039;&#039;&#039;Methode&#039;&#039;&#039; ausgeführt, so soll nun eine Methode im Motor aufgerufen werden, die diesen startet, und nach den gefahrenen Kilomtern wieder stoppt. Auch der Treibstoffverbrauch soll mit dem Motor zusammenhängen. Vielleicht ist es eine gute Idee beim Starten den Tank an den Motor zu übergeben?&lt;br /&gt;
&lt;br /&gt;
==== Erstelle folgende &#039;&#039;&#039;Subklassen&#039;&#039;&#039; von &#039;&#039;&#039;Tank&#039;&#039;&#039; ====&lt;br /&gt;
* Battery&lt;br /&gt;
* FuelTank&lt;br /&gt;
&lt;br /&gt;
 Überlege welche &#039;&#039;&#039;Methoden&#039;&#039;&#039; in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; &#039;&#039;&#039;Tank&#039;&#039;&#039; Sinn machen.&lt;br /&gt;
&lt;br /&gt;
==== Erstelle folgende &#039;&#039;&#039;Subklassen&#039;&#039;&#039; von &#039;&#039;&#039;Car&#039;&#039;&#039; ====&lt;br /&gt;
* SelfRepairingCar (hat der Motor einen Schaden, so soll dieser automatisch repariert und weitergefahren werden)&lt;br /&gt;
* AeroDynamicCar (reduziert den Treibstoffverbrauch um 50%)&lt;br /&gt;
* CrapCar (erhöht die Wahrscheinlichkeit dass der Motor kaputt geht um 50%)&lt;br /&gt;
&lt;br /&gt;
 Überlege welche &#039;&#039;&#039;Methoden&#039;&#039;&#039; in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; &#039;&#039;&#039;Car&#039;&#039;&#039; sinn machen. Eine eigene Methode in der &#039;&#039;&#039;Superklasse&#039;&#039;&#039; welche den Treibstoffverbrauch pro Kilometer ausrechnet, macht wahrscheinlich sinn. Diese kann dann in den &#039;&#039;&#039;Subklassen&#039;&#039;&#039; überschrieben werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Autosimulation ausgiebig.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bank ===&lt;br /&gt;
Ein Bankinstitut hat verschiedene Schalter. Ein Kunde geht in ein Bankinstitut um sein Bankgeschäft zu verrichten. Zuerst geht der Kunde ins Institut und geht zum nächsten freien Schalter. Wenn der Kunde den Schalter wieder verlässt, wird der Schalter zu einer Wahrscheinlichkeit von 20% für eine Pause geschlossen (die Pause eines Schalters endet nach dem 3 weitere Kunden die Bank betreten und verlassen haben). Hat ein Schalter kein Geld mehr so muss dieser wieder aufgefüllt werden und der Schalter ist für die Dauer eines Kunden geschlossen.&lt;br /&gt;
 * Das Bankgeschäft eines Kunden ist entweder eine Einzahlung bzw. eine Auszahlung.&lt;br /&gt;
 * Kann ein Schalter eine gewisse Geldmenge nicht bedienen geht der Kunde zum nächsten Schalter und der Ursprüngliche Schalter wird aufgefüllt.&lt;br /&gt;
 * Es soll nachvollzogen werden können welcher Schalter welche Kunden bedient hat und was für ein Betrag eingezahlt oder ausgezahlt wurde (&#039;&#039;&#039;ACHTUNG&#039;&#039;&#039; keine {{JSL|HashMap}}).&lt;br /&gt;
&lt;br /&gt;
# Erstelle ein UML Diagramm für dein Banksystem (Dia)&lt;br /&gt;
# Erstelle die notwendingen Klassen und Methoden.&lt;br /&gt;
# Erstelle nun eine Bank mit einigen Schaltern und erstelle weiters einige Kunden.&lt;br /&gt;
# Simuliere nun das Bankgeschäft. Die Kunden gehen der reihe nach in die Bank. Am Ende der Simulation soll für jeden Schalter eine Statistik ausgegeben werden (welche Kunden waren dort, welche Beträge wurden verarbeitet).&lt;br /&gt;
# Erstelle Unit Tests für deine Banksimulation&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal ===&lt;br /&gt;
 Das wurde schonmal gemacht, einfach nochmal machen, das schadet nicht :-)&lt;br /&gt;
Erstelle eine Methode welche durch das Dateisystem ab einem gegebenen Pfad navigiert (Ob der Pfad als {{JSL|String}} oder {{JSL|File}} übergeben wird ist egal). Wird der Pfad nicht gefunden, so soll eine {{JSL|FileNotFoundException}} geworfen werden. Die Navigation soll dabei &#039;&#039;&#039;Rekursiv&#039;&#039;&#039; erfolgen. Gib den Pfad mit entsprechender Einrückung aus.&lt;br /&gt;
 &#039;&#039;&#039;Tip zur Rekursion:&#039;&#039;&#039; Iteriere in einer Methode durch alle Kinder einer Datei. Handelt es sich um einen Ordner so rufe für jedes Kind dieses Ordners die Methode wieder auf und erhöhe die Einrückung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe (muss nicht genau so aussehen):&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
├── otherPackageInvocationTest&lt;br /&gt;
│   └── Test.java&lt;br /&gt;
├── week1&lt;br /&gt;
│   ├── tag3&lt;br /&gt;
│   │   ├── Aufgabe1.java&lt;br /&gt;
│   │   ├── Aufgabe2.java&lt;br /&gt;
│   │   └── Loops.java&lt;br /&gt;
│   ├── tag4&lt;br /&gt;
│   │   ├── Christbaum2.java&lt;br /&gt;
│   │   ├── Christbaum.java&lt;br /&gt;
│   │   ├── Loops.java&lt;br /&gt;
│   │   ├── Traingle2.java&lt;br /&gt;
│   │   └── Triangle.java&lt;br /&gt;
│   ├── tag5&lt;br /&gt;
│   │   ├── Circle2.java&lt;br /&gt;
│   │   ├── Circle3.java&lt;br /&gt;
│   │   ├── Circle.java&lt;br /&gt;
│   │   └── Methods.java&lt;br /&gt;
│   └── tag5a&lt;br /&gt;
│       └── UseMethods.java&lt;br /&gt;
├── week2&lt;br /&gt;
│   ├── day3&lt;br /&gt;
│   │   ├── Calendar.java&lt;br /&gt;
│   │   ├── LogicPuzzle.java&lt;br /&gt;
│   │   ├── Recursion2.java&lt;br /&gt;
│   │   └── Recursion.java&lt;br /&gt;
│   └── day4&lt;br /&gt;
│       ├── Menu.java&lt;br /&gt;
│       └── UserInput.java&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal usefull ===&lt;br /&gt;
Erstelle eine Methode welche durch das Dateisystem ab einem gegebenen Pfad navigiert. Die Methode erhält weiters eine Klasse {{JSL|FileReceiver}}. Diese Klasse hat eine Methode {{JSL|onFileReceived(int depth, File file)}} welche zur Verarbeitung jeder einzelnen Datei, bzw. jedes einzelnen Ordners aufgerufen wird. Erstelle verschiedene weitere Klassen die von {{JSL|FileReceiver}} erben und {{JSL|onFileReceived(int depth, File file)}} überschreiben und folgende Aufgaben erfüllen sollen:&lt;br /&gt;
* Größe aller Dateien berechnen&lt;br /&gt;
* Anzahl der Dateien mit einer bestimmten Endung zählen&lt;br /&gt;
* Alle Dateiendungen Zählen. Tip.: {{JSL|HashMap}}&lt;br /&gt;
* Die größe jedes Ordners ermitteln. Tip.: Hier wird die &#039;&#039;&#039;depth&#039;&#039;&#039; und ein Stapel benötigt ({{JSL|List}}, oder {{JSL|Stack}}).&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Filesystem traversal usefull &amp;amp; extended ===&lt;br /&gt;
Wie in der vorhergehenden Aufgabe, jedoch soll nicht nur ein {{JSL|FileReceiver}} übergeben werden können, sondern eine {{JSL|List}} von {{JSL|FileReceiver}}.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: JUnit ===&lt;br /&gt;
Wähle drei Beispiele aus deiner Sammlung und teste diese mit &#039;&#039;&#039;JUnit&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Geometry ===&lt;br /&gt;
Erstelle eine &#039;&#039;&#039;Abstrakte Klasse&#039;&#039;&#039; {{JSL|Geometry}}. Diese enthält folgende &#039;&#039;&#039;Methoden&#039;&#039;&#039;:&lt;br /&gt;
* {{JSL|getCircumference()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
* {{JSL|getArea()}} und gibt einen {{JSL|double}} zurück&lt;br /&gt;
&lt;br /&gt;
Erstelle nun einige &#039;&#039;&#039;Klassen&#039;&#039;&#039; die von {{JSL|Geometry}} erben (Circle, Square, Rectangle, Triangle,...). Jede &#039;&#039;&#039;Klasse&#039;&#039;&#039; soll in ihrem Konstruktor die entsprechenden Werte erhalten.&lt;br /&gt;
&lt;br /&gt;
Erstelle nun verschiedene &#039;&#039;&#039;Instanzen&#039;&#039;&#039; von {{JSL|Geometry}}, speichere diese in einer {{JSL|List}}. Erstelle eine &#039;&#039;&#039;Methode&#039;&#039;&#039; die den Gesamtumfang und die Gesamtfläche aller {{JSL|Geometry}} &#039;&#039;&#039;Objekte&#039;&#039;&#039; in der {{JSL|List}} ausgibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Teste deine Implementierung ausgibig&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Verhalten ===&lt;br /&gt;
Wie in [[Protokoll#19._November_2021|Protokoll 19.11]] gezeigt, soll nun das &#039;&#039;&#039;Schwimmverhalten&#039;&#039;&#039; implementiert werden. Erstelle endweder die Bestehende Klassenhierarchie als Übung in deinem eigenen Paket, oder kopiere diese.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Graph === &lt;br /&gt;
&lt;br /&gt;
Ein Graph ist eine Datenstruktur die aus mehreren Knoten (Nodes besteht). Eine Node kann mehrere Nodes als Nachbarn haben, das heißt, sie hat eine Verbindung zu diesen Nachbarn.&lt;br /&gt;
[[Datei:Graph.png|mini|Ein einfacher Graph|150px]]&lt;br /&gt;
&lt;br /&gt;
* Erstelle eine Datenstruktur für die &#039;&#039;&#039;Node&#039;&#039;&#039; mit (X/Y Koordinaten), verwende für die Nachbarn eine {{JSL|List}} in der jeweiligen &#039;&#039;&#039;Node&#039;&#039;&#039;&lt;br /&gt;
* Erstelle weiters eine Datenstruktur für den Graphen, welche eine {{JSL|List}} von &#039;&#039;&#039;Nodes&#039;&#039;&#039; enthält&lt;br /&gt;
* Erstelle aus den schwarzen Pixeln des folgenden Labyrinths einen Graphen&lt;br /&gt;
&lt;br /&gt;
[[Datei:Labyrinth.png|150px|mini|none|Ein Labyrinth]]&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Dijkstra ===&lt;br /&gt;
&lt;br /&gt;
Zeige deinen Graphen in einem {{JSL|JPanel}} an. Es soll nun der Start und das Ziel angeklickt werden können. Finde mittels Dijkstra Algorithmus[https://de.wikipedia.org/wiki/Dijkstra-Algorithmus] den kürzesten Weg vom Start zum Ziel. Illustriere dabei alle durchwanderten Knoten.&lt;/div&gt;</summary>
		<author><name>Berna Köchle</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2737</id>
		<title>DCV 2022 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2737"/>
		<updated>2022-10-05T08:13:59Z</updated>

		<summary type="html">&lt;p&gt;Berna Köchle: /* Aufgabe: Buchstaben zählen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die {{JSL|String}} Operationen {{JSL|charAt()}}, {{JSL|toCharArray()}}, {{JSL|indexOf(...)}}, {{JSL|replaceAll(...)}}, {{JSL|matches(...)}}, {{JSL|split(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.&lt;br /&gt;
# Sortiere die Namen aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|compareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.compareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Viktor&amp;quot;, &amp;quot;Batuhan&amp;quot;, &amp;quot;Milan&amp;quot;, &amp;quot;Stefan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Martin&amp;quot;, &amp;quot;Franky&amp;quot;, &amp;quot;Fatima&amp;quot;, &amp;quot;Mike&amp;quot;, &amp;quot;Mase&amp;quot;, &amp;quot;Patric&amp;quot;, &amp;quot;Alp&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Svitlana&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälst du mit {{JSL|string.charAt(i)}}, oder auch mit {{JSL|string.toCharArray()[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben und Zeichen eines Texts gezählt werden. Den Text erhältst du über {{JSL|lukas.data.Texts.getSimpleText()}}.&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben und Zeichen zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausdruck aus der folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Denke daran, dass eine Tabelle Kopfzeile, Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@drlue&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@microsoft.c&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Factorial ===&lt;br /&gt;
Erstelle eine Function Faktorial auszurechnen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fakt(n) = n * fakt(n -1)&lt;br /&gt;
fakt(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Permutation ===&lt;br /&gt;
Erstelle eine Function, die die Permutationen generiert.&lt;br /&gt;
&lt;br /&gt;
Kontroll Check: Anzahl generierte Permutation muss gleich sein wie Faktorial von Anzahl Buchstaben.&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Berna Köchle</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2736</id>
		<title>DCV 2022 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2736"/>
		<updated>2022-10-05T08:12:28Z</updated>

		<summary type="html">&lt;p&gt;Berna Köchle: /* Aufgabe: Bubblesort mit Strings und Character Index */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die {{JSL|String}} Operationen {{JSL|charAt()}}, {{JSL|toCharArray()}}, {{JSL|indexOf(...)}}, {{JSL|replaceAll(...)}}, {{JSL|matches(...)}}, {{JSL|split(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.&lt;br /&gt;
# Sortiere die Namen aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|compareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.compareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Viktor&amp;quot;, &amp;quot;Batuhan&amp;quot;, &amp;quot;Milan&amp;quot;, &amp;quot;Stefan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Martin&amp;quot;, &amp;quot;Franky&amp;quot;, &amp;quot;Fatima&amp;quot;, &amp;quot;Mike&amp;quot;, &amp;quot;Mase&amp;quot;, &amp;quot;Patric&amp;quot;, &amp;quot;Alp&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Svitlana&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälst du mit {{JSL|string.charAt(i)}}, oder auch mit {{JSL|string.toCharArray()[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben eines Texts gezählt werden. Den Text erhältst du über {{JSL|lukas.data.Texts.getSimpleText()}}.&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausdruck aus der folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Denke daran, dass eine Tabelle Kopfzeile, Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@drlue&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@microsoft.c&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Factorial ===&lt;br /&gt;
Erstelle eine Function Faktorial auszurechnen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fakt(n) = n * fakt(n -1)&lt;br /&gt;
fakt(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Permutation ===&lt;br /&gt;
Erstelle eine Function, die die Permutationen generiert.&lt;br /&gt;
&lt;br /&gt;
Kontroll Check: Anzahl generierte Permutation muss gleich sein wie Faktorial von Anzahl Buchstaben.&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Berna Köchle</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2734</id>
		<title>DCV 2022 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2734"/>
		<updated>2022-10-04T13:08:29Z</updated>

		<summary type="html">&lt;p&gt;Berna Köchle: /* Aufgabe: Buchstaben zählen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die {{JSL|String}} Operationen {{JSL|charAt()}}, {{JSL|toCharArray()}}, {{JSL|indexOf(...)}}, {{JSL|replaceAll(...)}}, {{JSL|matches(...)}}, {{JSL|split(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.&lt;br /&gt;
# Sortiere die Namen aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|compareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.compareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Viktor&amp;quot;, &amp;quot;Batuhan&amp;quot;, &amp;quot;Milan&amp;quot;, &amp;quot;Stefan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Martin&amp;quot;, &amp;quot;Franky&amp;quot;, &amp;quot;Fatima&amp;quot;, &amp;quot;Mike&amp;quot;, &amp;quot;Mase&amp;quot;, &amp;quot;Patric&amp;quot;, &amp;quot;Alp&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Svitlana&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälts du mit {{JSL|string.charAt(i)}}, oder auch mit {{JSL|string.toCharArray()[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben eines Texts gezählt werden. Den Text erhältst du über {{JSL|lukas.data.Texts.getSimpleText()}}.&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausdruck aus der folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Denke daran, dass eine Tabelle Kopfzeile, Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@drlue&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@microsoft.c&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Factorial ===&lt;br /&gt;
Erstelle eine Function Faktorial auszurechnen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fakt(n) = n * fakt(n -1)&lt;br /&gt;
fakt(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Permutation ===&lt;br /&gt;
Erstelle eine Function, die die Permutationen generiert.&lt;br /&gt;
&lt;br /&gt;
Kontroll Check: Anzahl generierte Permutation muss gleich sein wie Faktorial von Anzahl Buchstaben.&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Berna Köchle</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2733</id>
		<title>DCV 2022 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2733"/>
		<updated>2022-10-04T12:49:31Z</updated>

		<summary type="html">&lt;p&gt;Berna Köchle: /* Aufgabe: Buchstaben zählen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die {{JSL|String}} Operationen {{JSL|charAt()}}, {{JSL|toCharArray()}}, {{JSL|indexOf(...)}}, {{JSL|replaceAll(...)}}, {{JSL|matches(...)}}, {{JSL|split(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.&lt;br /&gt;
# Sortiere die Namen aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|compareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.compareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Viktor&amp;quot;, &amp;quot;Batuhan&amp;quot;, &amp;quot;Milan&amp;quot;, &amp;quot;Stefan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Martin&amp;quot;, &amp;quot;Franky&amp;quot;, &amp;quot;Fatima&amp;quot;, &amp;quot;Mike&amp;quot;, &amp;quot;Mase&amp;quot;, &amp;quot;Patric&amp;quot;, &amp;quot;Alp&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Svitlana&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälts du mit {{JSL|string.charAt(i)}}, oder auch mit {{JSL|string.toCharArray()[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben eines Texts gezählt werden. Den Text erhältst du über {{JSL|lukas.data.Texts.getSimpleText()}}.&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Buchstaben aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausdruck aus der folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Denke daran, dass eine Tabelle Kopfzeile, Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@drlue&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@microsoft.c&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Factorial ===&lt;br /&gt;
Erstelle eine Function Faktorial auszurechnen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fakt(n) = n * fakt(n -1)&lt;br /&gt;
fakt(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Permutation ===&lt;br /&gt;
Erstelle eine Function, die die Permutationen generiert.&lt;br /&gt;
&lt;br /&gt;
Kontroll Check: Anzahl generierte Permutation muss gleich sein wie Faktorial von Anzahl Buchstaben.&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Berna Köchle</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2732</id>
		<title>DCV 2022 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2732"/>
		<updated>2022-10-04T12:22:15Z</updated>

		<summary type="html">&lt;p&gt;Berna Köchle: /* Aufgabe: Buchstaben zählen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die {{JSL|String}} Operationen {{JSL|charAt()}}, {{JSL|toCharArray()}}, {{JSL|indexOf(...)}}, {{JSL|replaceAll(...)}}, {{JSL|matches(...)}}, {{JSL|split(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.&lt;br /&gt;
# Sortiere die Namen aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|compareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.compareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Viktor&amp;quot;, &amp;quot;Batuhan&amp;quot;, &amp;quot;Milan&amp;quot;, &amp;quot;Stefan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Martin&amp;quot;, &amp;quot;Franky&amp;quot;, &amp;quot;Fatima&amp;quot;, &amp;quot;Mike&amp;quot;, &amp;quot;Mase&amp;quot;, &amp;quot;Patric&amp;quot;, &amp;quot;Alp&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Svitlana&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälts du mit {{JSL|string.charAt(i)}}, oder auch mit {{JSL|string.toCharArray()[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben eines Texts gezählt werden. Den Text erhältst du über {{JSL|lukas.data.Texts.getSimpleText()}}.&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der Buchstaben aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausdruck aus der folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Denke daran, dass eine Tabelle Kopfzeile, Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@drlue&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@microsoft.c&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Factorial ===&lt;br /&gt;
Erstelle eine Function Faktorial auszurechnen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fakt(n) = n * fakt(n -1)&lt;br /&gt;
fakt(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Permutation ===&lt;br /&gt;
Erstelle eine Function, die die Permutationen generiert.&lt;br /&gt;
&lt;br /&gt;
Kontroll Check: Anzahl generierte Permutation muss gleich sein wie Faktorial von Anzahl Buchstaben.&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Berna Köchle</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2731</id>
		<title>DCV 2022 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2731"/>
		<updated>2022-10-03T12:38:16Z</updated>

		<summary type="html">&lt;p&gt;Berna Köchle: /* Aufgabe: Bubblesort mit Strings und Character Index */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die {{JSL|String}} Operationen {{JSL|charAt()}}, {{JSL|toCharArray()}}, {{JSL|indexOf(...)}}, {{JSL|replaceAll(...)}}, {{JSL|matches(...)}}, {{JSL|split(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.&lt;br /&gt;
# Sortiere die Namen aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|compareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.compareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Viktor&amp;quot;, &amp;quot;Batuhan&amp;quot;, &amp;quot;Milan&amp;quot;, &amp;quot;Stefan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Martin&amp;quot;, &amp;quot;Franky&amp;quot;, &amp;quot;Fatima&amp;quot;, &amp;quot;Mike&amp;quot;, &amp;quot;Mase&amp;quot;, &amp;quot;Patric&amp;quot;, &amp;quot;Alp&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Svitlana&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre charAt(2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälts du mit {{JSL|string.charAt(i)}}, oder auch mit {{JSL|string.toCharArray()[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben eines Texts gezählt werden. Den Text erhältst du über {{JSL|data.Texts.getSimpleText()}}.&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der Buchstaben aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausdruck aus der folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Denke daran, dass eine Tabelle Kopfzeile, Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@drlue&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@microsoft.c&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Factorial ===&lt;br /&gt;
Erstelle eine Function Faktorial auszurechnen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fakt(n) = n * fakt(n -1)&lt;br /&gt;
fakt(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Permutation ===&lt;br /&gt;
Erstelle eine Function, die die Permutationen generiert.&lt;br /&gt;
&lt;br /&gt;
Kontroll Check: Anzahl generierte Permutation muss gleich sein wie Faktorial von Anzahl Buchstaben.&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Berna Köchle</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2730</id>
		<title>DCV 2022 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2730"/>
		<updated>2022-10-03T11:27:59Z</updated>

		<summary type="html">&lt;p&gt;Berna Köchle: /* Aufgabe: Bubblesort mit Strings an Character Index */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die {{JSL|String}} Operationen {{JSL|charAt()}}, {{JSL|toCharArray()}}, {{JSL|indexOf(...)}}, {{JSL|replaceAll(...)}}, {{JSL|matches(...)}}, {{JSL|split(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.&lt;br /&gt;
# Sortiere die Namen aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|compareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.compareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Viktor&amp;quot;, &amp;quot;Batuhan&amp;quot;, &amp;quot;Milan&amp;quot;, &amp;quot;Stefan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Martin&amp;quot;, &amp;quot;Franky&amp;quot;, &amp;quot;Fatima&amp;quot;, &amp;quot;Mike&amp;quot;, &amp;quot;Mase&amp;quot;, &amp;quot;Patric&amp;quot;, &amp;quot;Alp&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Svitlana&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings und Character Index ===&lt;br /&gt;
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von &amp;quot;apfel&amp;quot; wäre char (2) = &amp;quot;f&amp;quot; und von &amp;quot;Birne&amp;quot; &amp;quot;r&amp;quot;.  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach char (2), also nach dem 3. Buchstaben.  &lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälts du mit {{JSL|string.charAt(i)}}, oder auch mit {{JSL|string.toCharArray()[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben eines Texts gezählt werden. Den Text erhältst du über {{JSL|data.Texts.getSimpleText()}}.&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der Buchstaben aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausdruck aus der folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Denke daran, dass eine Tabelle Kopfzeile, Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@drlue&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@microsoft.c&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Factorial ===&lt;br /&gt;
Erstelle eine Function Faktorial auszurechnen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fakt(n) = n * fakt(n -1)&lt;br /&gt;
fakt(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Permutation ===&lt;br /&gt;
Erstelle eine Function, die die Permutationen generiert.&lt;br /&gt;
&lt;br /&gt;
Kontroll Check: Anzahl generierte Permutation muss gleich sein wie Faktorial von Anzahl Buchstaben.&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Berna Köchle</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2728</id>
		<title>DCV 2022 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2728"/>
		<updated>2022-10-03T07:46:41Z</updated>

		<summary type="html">&lt;p&gt;Berna Köchle: /* Aufgabe: Bubblesort mit Strings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die {{JSL|String}} Operationen {{JSL|charAt()}}, {{JSL|toCharArray()}}, {{JSL|indexOf(...)}}, {{JSL|replaceAll(...)}}, {{JSL|matches(...)}}, {{JSL|split(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.&lt;br /&gt;
# Sortiere die Namen aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|compareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.compareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names = new String[]{&amp;quot;Viktor&amp;quot;, &amp;quot;Batuhan&amp;quot;, &amp;quot;Milan&amp;quot;, &amp;quot;Stefan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Franky&amp;quot;, &amp;quot;Fatima&amp;quot;, &amp;quot;Mike&amp;quot;, &amp;quot;Mase&amp;quot;, &amp;quot;Patric&amp;quot;, &amp;quot;Alp&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Svitlana&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings an Character Index ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} nach dem sortiert werden soll.&lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälts du mit {{JSL|string.charAt(i)}}, oder auch mit {{JSL|string.toCharArray()[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben eines Texts gezählt werden. Den Text erhältst du über {{JSL|data.Texts.getSimpleText()}}.&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der Buchstaben aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausdruck aus der folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Denke daran, dass eine Tabelle Kopfzeile, Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@drlue&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@microsoft.c&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Factorial ===&lt;br /&gt;
Erstelle eine Function Faktorial auszurechnen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fakt(n) = n * fakt(n -1)&lt;br /&gt;
fakt(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Permutation ===&lt;br /&gt;
Erstelle eine Function, die die Permutationen generiert.&lt;br /&gt;
&lt;br /&gt;
Kontroll Check: Anzahl generierte Permutation muss gleich sein wie Faktorial von Anzahl Buchstaben.&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Berna Köchle</name></author>
	</entry>
	<entry>
		<id>https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2727</id>
		<title>DCV 2022 09/Strukturierte Programmierung Uebungen/String Aufgaben</title>
		<link rel="alternate" type="text/html" href="https://ccwiki.digitalcampusvorarlberg.at/index.php?title=DCV_2022_09/Strukturierte_Programmierung_Uebungen/String_Aufgaben&amp;diff=2727"/>
		<updated>2022-10-03T07:43:16Z</updated>

		<summary type="html">&lt;p&gt;Berna Köchle: /* Aufgabe: Bubblesort mit Strings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Im folgenden sollen die {{JSL|String}} Operationen {{JSL|charAt()}}, {{JSL|toCharArray()}}, {{JSL|indexOf(...)}}, {{JSL|replaceAll(...)}}, {{JSL|matches(...)}}, {{JSL|split(...)}} erarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings === &lt;br /&gt;
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.&lt;br /&gt;
# Sortiere die Namen aufsteigend (Ascending)&lt;br /&gt;
# Sortiere die Namen absteigend (Descending)&lt;br /&gt;
 Tip.: Strings können mit der Instanz Methode {{JSL|compareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|&amp;quot;a&amp;quot;.compareTo(&amp;quot;b&amp;quot;)}}&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] names  new String[]{&amp;quot;Viktor&amp;quot;, &amp;quot;Batuhan&amp;quot;, &amp;quot;Milan&amp;quot;, &amp;quot;Stefan&amp;quot;, &amp;quot;Berna&amp;quot;, &amp;quot;Franky&amp;quot;, &amp;quot;Fatima&amp;quot;, &amp;quot;Mike&amp;quot;, &amp;quot;Mase&amp;quot;, &amp;quot;Patric&amp;quot;, &amp;quot;Alp&amp;quot;, &amp;quot;Gyula&amp;quot;, &amp;quot;Lukas&amp;quot;, &amp;quot;Svitlana&amp;quot; };&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings Extended ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} &#039;&#039;&#039;aufsteigend&#039;&#039;&#039;, oder &#039;&#039;&#039;absteigend&#039;&#039;&#039; sortiert wird.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Bubblesort mit Strings an Character Index ===&lt;br /&gt;
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|String[]}} und sortiere es mit einem selbsterstellten &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; und gib es dann aus. Der &#039;&#039;&#039;Bubblesort Algorithmus&#039;&#039;&#039; soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} nach dem sortiert werden soll.&lt;br /&gt;
 Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälts du mit {{JSL|string.charAt(i)}}, oder auch mit {{JSL|string.toCharArray()[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.&lt;br /&gt;
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Reverse ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Reverseprogramm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
ollaH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Randomize ===&lt;br /&gt;
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten, erstelle ein neues {{JSL|char[]}}, befülle es zufällig mit den Buchstaben des Wortes, füge es mittels {{JSL|new String(charArray)}} zusammen und gib es aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Willkommen zum Zufallsshuffle Programm!!!111&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo&lt;br /&gt;
lolHa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Buchstaben zählen ===&lt;br /&gt;
In der folgenden Aufgabe sollen alle Buchstaben eines Texts gezählt werden. Den Text erhältst du über {{JSL|data.Texts.getSimpleText()}}.&lt;br /&gt;
&lt;br /&gt;
Um die einzelnen Buchstaben zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der Buchstaben aus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
A: 10&lt;br /&gt;
B: 20&lt;br /&gt;
C: 1&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Daten tabellarisch darstellen ===&lt;br /&gt;
Erstelle einen schönen tabellarischen Ausdruck aus der folgenden Arrays:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] firstName = {&amp;quot;Alfonso&amp;quot;, &amp;quot;Beatrix-Eleonor&amp;quot;, &amp;quot;Cecil&amp;quot;, &amp;quot;Daniel&amp;quot;, &amp;quot;Elmar&amp;quot;};&lt;br /&gt;
String[] lastName = {&amp;quot;Klein&amp;quot;, &amp;quot;Kinderdorfer&amp;quot;, &amp;quot;Al Elmenar&amp;quot;, &amp;quot;Schmidt&amp;quot;, &amp;quot;Simma&amp;quot;};&lt;br /&gt;
int[] age = {40, 78, 5, 18, 81};&lt;br /&gt;
String[] place = {&amp;quot;Wien&amp;quot;, &amp;quot;Schwarzach&amp;quot;, &amp;quot;Wiener Neudorf&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;, &amp;quot;Sankt Pölten&amp;quot;};&lt;br /&gt;
float[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Denke daran, dass eine Tabelle Kopfzeile, Trennzeichen haben kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Suche nach &amp;quot;Hesse&amp;quot; ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Wie oft kommt das Wort &amp;quot;Hesse&amp;quot; in folgendem Text vor? An welchen Stellen?&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Text &amp;quot;Hesse&amp;quot; hervorheben ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.&lt;br /&gt;
&lt;br /&gt;
Bei der Ausgabe des Texts sollen alle Vorkommonisse von &#039;&#039;&#039;Hesse&#039;&#039;&#039; auf Uppercase (&#039;&#039;&#039;HESSE&#039;&#039;&#039;) gestellt werden.&lt;br /&gt;
Verwende die {{JSL|replace()}} Funktion.&lt;br /&gt;
&lt;br /&gt;
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Längster gemeinsamer Substring ===&lt;br /&gt;
Der Anwender soll zwei {{JSL|Strings}} eingeben. Finde den längsten gemeinsamen Substring beider {{JSL|Strings}}.&lt;br /&gt;
&lt;br /&gt;
# Finde das längste gemeinsame Wort&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
# &#039;&#039;&#039;Bonus&#039;&#039;&#039; finde die längste gemeinsame Zeichenkette&lt;br /&gt;
## Erstelle aussagekräftige Unittests&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 1&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Hallo wie gehts dir?&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Mir gehts gut!&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
gehts&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe 2 (Bonus)&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Bitte gib Wort 1 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Barbara&lt;br /&gt;
Bitte gib Wort 2 ein:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;Rhabarber&lt;br /&gt;
längster gemeinsamer Substring:&lt;br /&gt;
bar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String[] words = wordSplit(text, &amp;quot;Tag&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{BML|code=&lt;br /&gt;
Heute wird ein guter &lt;br /&gt;
! Heute wird der beste &lt;br /&gt;
 überhaupt! Heute wird ein spitzen super &lt;br /&gt;
!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Split &amp;amp; Sort ===&lt;br /&gt;
Erstelle eine Methode welche den {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
in seine Worte zerlegt. Sortiere dann die Worte mit &#039;&#039;&#039;Bubblesort&#039;&#039;&#039;. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.&lt;br /&gt;
 Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;&lt;br /&gt;
{{BML|code=&lt;br /&gt;
[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all ===&lt;br /&gt;
Ersetze im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;wird&#039;&#039;&#039; durch &#039;&#039;&#039;war und ist&#039;&#039;&#039; und gib ihn aus.&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 2 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Jeden &#039;&#039;&#039;Kleinbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jeden &#039;&#039;&#039;Großbuchstaben&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Leerzeichen&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Jedes &#039;&#039;&#039;Ausrufezeichen !&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Replace all 3 ===&lt;br /&gt;
Lösche im {{JSL|String}}&lt;br /&gt;
&lt;br /&gt;
{{JSL|&amp;quot;749813247132984712039487123049871204398712039487&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;0 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;2 bis 4&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
# Alle Zahlen von &#039;&#039;&#039;1 bis 3&#039;&#039;&#039; und &#039;&#039;&#039;6 bis 9&#039;&#039;&#039; und gib ihn aus&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Wortanalyse ===&lt;br /&gt;
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.&lt;br /&gt;
&lt;br /&gt;
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (&#039;&#039;&#039;, oder . oder -&#039;&#039;&#039; ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:&lt;br /&gt;
&lt;br /&gt;
# Längstes Wort&lt;br /&gt;
# Kürzestes Wort&lt;br /&gt;
# Worte alphabetisch sortieren&lt;br /&gt;
# Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)&lt;br /&gt;
# Worte zählen und nach ihrer Häufigkeit ausgeben&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Email Regex aka. Regbert ===&lt;br /&gt;
Erstelle einen &#039;&#039;&#039;regulären Ausdruck&#039;&#039;&#039; (&#039;&#039;&#039;Reg&#039;&#039;&#039;ular &#039;&#039;&#039;Ex&#039;&#039;&#039;pression) für Email Adressen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
String regex = &amp;quot;[richtiger Regex hier]&amp;quot;;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;rambina1.1alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|true}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;1rambina1.alfons@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;@drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;drlue.at&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@drlue&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufruf&#039;&#039;&#039;{{Space10}}{{JSL|System.out.println(&amp;quot;asdf@microsoft.c&amp;quot;.matches(regex));}}{{Space10}}&#039;&#039;&#039;Ausgabe&#039;&#039;&#039;{{Space10}}{{BSL|false}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Factorial ===&lt;br /&gt;
Erstelle eine Function Faktorial auszurechnen.&lt;br /&gt;
&lt;br /&gt;
{{JML|code=&lt;br /&gt;
fakt(n) = n * fakt(n -1)&lt;br /&gt;
fakt(1) = 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Aufgabe: Rekursive Function: Permutation ===&lt;br /&gt;
Erstelle eine Function, die die Permutationen generiert.&lt;br /&gt;
&lt;br /&gt;
Kontroll Check: Anzahl generierte Permutation muss gleich sein wie Faktorial von Anzahl Buchstaben.&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
{{JML|code=&lt;br /&gt;
perm(&amp;quot;ABCD&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Permutationen:&lt;br /&gt;
ABCD&lt;br /&gt;
ABDC&lt;br /&gt;
ACBD&lt;br /&gt;
ACDB&lt;br /&gt;
ADBC&lt;br /&gt;
ADCB&lt;br /&gt;
BACD&lt;br /&gt;
BADC&lt;br /&gt;
BCAD&lt;br /&gt;
BCDA&lt;br /&gt;
BDAC&lt;br /&gt;
BDCA&lt;br /&gt;
CABD&lt;br /&gt;
CADB&lt;br /&gt;
CBAD&lt;br /&gt;
CBDA&lt;br /&gt;
CDAB&lt;br /&gt;
CDBA&lt;br /&gt;
DABC&lt;br /&gt;
DACB&lt;br /&gt;
DBAC&lt;br /&gt;
DBCA&lt;br /&gt;
DCAB&lt;br /&gt;
DCBA&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Berna Köchle</name></author>
	</entry>
</feed>