<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=141.23.110.8</id>
	<title>FreitagsrundenWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stageing.freitagsrunde.org//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=141.23.110.8"/>
	<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//Spezial:Beitr%C3%A4ge/141.23.110.8"/>
	<updated>2026-11-02T16:00:58Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.45.6</generator>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Javakurs/%C3%9Cbungsaufgaben/Studentendatenbank/Musterloesung&amp;diff=17680</id>
		<title>Javakurs/Übungsaufgaben/Studentendatenbank/Musterloesung</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Javakurs/%C3%9Cbungsaufgaben/Studentendatenbank/Musterloesung&amp;diff=17680"/>
		<updated>2012-03-07T14:35:30Z</updated>

		<summary type="html">&lt;p&gt;141.23.110.8: Musterlösung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die Musterlösung kann von eurer Lösung abweichen, da es immer mehrere Varianten gibt ein Problem zu lösen. Im Zweifelsfall Fragt einen Tutor.&lt;br /&gt;
&lt;br /&gt;
== Lösung: Student.java ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @author Jonas&lt;br /&gt;
 */&lt;br /&gt;
public class Student {&lt;br /&gt;
	&lt;br /&gt;
	String name;&lt;br /&gt;
	int matnr;&lt;br /&gt;
	String studiengang;&lt;br /&gt;
	int age;&lt;br /&gt;
	&lt;br /&gt;
	public Student() {&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public Student(String name, int matnr, String studiengang, int age) {&lt;br /&gt;
		this.name = name;&lt;br /&gt;
		this.matnr = matnr;&lt;br /&gt;
		this.studiengang = studiengang;&lt;br /&gt;
		this.age = age;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public void printMe() {&lt;br /&gt;
		System.out.println(&amp;quot;Student: &amp;quot; + name + &amp;quot;\n  | Matrikelnummer: &amp;quot; + matnr + &amp;quot;\n  | Studiengang: &amp;quot; + studiengang+ &amp;quot;\n  | Alter: &amp;quot; + age);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lösung: StudentDatabase.java ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @author Jonas&lt;br /&gt;
 */&lt;br /&gt;
public class StudentDatabase {&lt;br /&gt;
&lt;br /&gt;
	private Student[] students;&lt;br /&gt;
&lt;br /&gt;
	public StudentDatabase(int size) {&lt;br /&gt;
		students = new Student[size];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt alle Studenten auf der Konsole aus.&lt;br /&gt;
	 */&lt;br /&gt;
	public void printMe() {&lt;br /&gt;
		for (Student s : students) {&lt;br /&gt;
			// Felder im Array, die keinen Eintrag haben, werden ignoriert.&lt;br /&gt;
			if (s != null) {&lt;br /&gt;
				s.printMe();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Wenn noch Platz in der Datenbank ist, wird ein neuer Student erzeugt und&lt;br /&gt;
	 * in die Datenbank eingefügt. Wenn die DB voll ist, wird eine Fehlermeldung&lt;br /&gt;
	 * ausgegeben.&lt;br /&gt;
	 */&lt;br /&gt;
	public void addStudent(String name, int matnr, String studiengang, int age) {&lt;br /&gt;
		int firstFreeIndex = -1;&lt;br /&gt;
		// Im Array wird das erste freie Feld gesucht.&lt;br /&gt;
		for (int i = 0; i &amp;lt; students.length; i++) {&lt;br /&gt;
			if (students[i] == null) {&lt;br /&gt;
				// Gefunden!&lt;br /&gt;
				firstFreeIndex = i;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		// Wenn firstFreeIndex immer noch -1 ist, wurde kein freies Feld&lt;br /&gt;
		// gefunden -&amp;gt; Datenbank ist voll!&lt;br /&gt;
		if (firstFreeIndex == -1) {&lt;br /&gt;
			System.out.println(&amp;quot;Studentendatenbank voll!&amp;quot;);&lt;br /&gt;
		} else {&lt;br /&gt;
			// Ansonsten genau an dieser Stelle einen neuen Studenten einfügen.&lt;br /&gt;
			students[firstFreeIndex] = new Student(name, matnr, studiengang,&lt;br /&gt;
					age);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Der Student mit der übergebenen Matrikelnummer wird aus der Datenbank&lt;br /&gt;
	 * gelöscht. Wenn die Matrikelnummer nicht gefunden wird, wird eine&lt;br /&gt;
	 * Fehlermeldung ausgegeben.&lt;br /&gt;
	 */&lt;br /&gt;
	public void deleteStudent(int matnr) {&lt;br /&gt;
		for (int i = 0; i &amp;lt; students.length; i++) {&lt;br /&gt;
			// Auch hier die Überprüfung auf null, damit keine&lt;br /&gt;
			// NullPointerExceptions geworfen werden.&lt;br /&gt;
			if (students[i] != null &amp;amp;&amp;amp; students[i].matnr == matnr) {&lt;br /&gt;
				students[i] = null;&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		System.out.println(&amp;quot;Student nicht gefunden!&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Gibt die Anzahl der Studenten in der Datenbank aus.&lt;br /&gt;
	 */&lt;br /&gt;
	public int numberOfStudents() {&lt;br /&gt;
		int result = 0;&lt;br /&gt;
		for (Student s : students) {&lt;br /&gt;
			if (s != null) {&lt;br /&gt;
				result++;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return result;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Berechnet das durchschnittliche Alter aller Studenten.&lt;br /&gt;
	 */&lt;br /&gt;
	public double averageAge() {&lt;br /&gt;
		int totalAge = 0;&lt;br /&gt;
		for (Student s : students) {&lt;br /&gt;
			if (s != null) {&lt;br /&gt;
				totalAge += s.age;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		// Die Konversion nach double ist erforderlich, da sonst eine Division&lt;br /&gt;
		// auf ganzen Zahlen durchgeführt wird und Nachkommastellen verloren&lt;br /&gt;
		// gehen.&lt;br /&gt;
		return (double) totalAge / (double) numberOfStudents();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lösung: StudentendatenbankTest.java ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
import java.util.Random;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * @author Jonas&lt;br /&gt;
 */&lt;br /&gt;
public class StudentendatenbankTest {&lt;br /&gt;
&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		//Aufgabe 1&lt;br /&gt;
		System.out.println(&amp;quot;Erzeuge einen neuen Studenten...&amp;quot;);&lt;br /&gt;
		Student max = new Student();&lt;br /&gt;
		max.name = &amp;quot;Max Musterstudent&amp;quot;;&lt;br /&gt;
		max.matnr = 424242;&lt;br /&gt;
		max.studiengang = &amp;quot;Wi-Inf&amp;quot;;&lt;br /&gt;
		&lt;br /&gt;
		System.out.println(&amp;quot;Name: &amp;quot; + max.name + &amp;quot;, Matrikelnummer: &amp;quot; + max.matnr + &amp;quot;, Studiengang: &amp;quot; + max.studiengang);&lt;br /&gt;
		&lt;br /&gt;
		//Aufgabe 2&lt;br /&gt;
		System.out.println(&amp;quot;Erzeuge noch einen neuen Studenten...&amp;quot;);&lt;br /&gt;
		Student paul = new Student(&amp;quot;Paul&amp;quot;, 213123, &amp;quot;Informatik&amp;quot;, 23);&lt;br /&gt;
		System.out.println(&amp;quot;Name: &amp;quot; + paul.name + &amp;quot;, Matrikelnummer: &amp;quot; + paul.matnr + &amp;quot;, Studiengang: &amp;quot; + paul.studiengang);&lt;br /&gt;
		&lt;br /&gt;
		//Aufgabe 3&lt;br /&gt;
		System.out.println(&amp;quot;Ausgabe mithilfe von printMe()...&amp;quot;);&lt;br /&gt;
		paul.printMe();&lt;br /&gt;
		&lt;br /&gt;
		//Aufgabe 4&lt;br /&gt;
		Student[] studenten = new Student[100];&lt;br /&gt;
		Random random = new Random();&lt;br /&gt;
		//Schritt 1: Erzeugen...&lt;br /&gt;
		for (int i = 0; i &amp;lt; 100; i++) {&lt;br /&gt;
			studenten[i] = new Student(&amp;quot;Name&amp;quot;, random.nextInt(899999) + 100000, &amp;quot;Informatik&amp;quot;, 26);&lt;br /&gt;
		}&lt;br /&gt;
		//Schritt 2: Ausgeben... (Dies kann natürlich auch in der ersten for-Schleife erledigt werden.)&lt;br /&gt;
		for (Student s : studenten) {&lt;br /&gt;
			s.printMe();&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		//Aufgabe 5&lt;br /&gt;
		System.out.println(&amp;quot;Studentendatenbank erzeugen...&amp;quot;);&lt;br /&gt;
		StudentDatabase db = new StudentDatabase(3);&lt;br /&gt;
		db.addStudent(&amp;quot;Hannes&amp;quot;, 123456, &amp;quot;Wi-Inf&amp;quot;, 27);&lt;br /&gt;
		db.addStudent(&amp;quot;Marry&amp;quot;, 634252, &amp;quot;Informatik&amp;quot;, 28);&lt;br /&gt;
		db.addStudent(&amp;quot;Oliver&amp;quot;, 234123, &amp;quot;Elektrotechnik&amp;quot;, 22);&lt;br /&gt;
		db.printMe();&lt;br /&gt;
		//Fehler!&lt;br /&gt;
		db.addStudent(&amp;quot;Name&amp;quot;, 123123, &amp;quot;Informatik&amp;quot;, 64);&lt;br /&gt;
		&lt;br /&gt;
		//Aufgabe 6&lt;br /&gt;
		System.out.println(&amp;quot;Hannes entfernen...&amp;quot;);&lt;br /&gt;
		db.deleteStudent(123456);&lt;br /&gt;
		db.printMe();&lt;br /&gt;
		&lt;br /&gt;
		//Aufgabe 7&lt;br /&gt;
		System.out.println(&amp;quot;Anzahl der Studenten in der Datenbank: &amp;quot; + db.numberOfStudents());&lt;br /&gt;
		db.addStudent(&amp;quot;Hannes&amp;quot;, 123456, &amp;quot;Wi-Inf&amp;quot;, 27);&lt;br /&gt;
		System.out.println(&amp;quot;Anzahl der Studenten in der Datenbank, nachdem Hannes wieder hinzugefügt wurde: &amp;quot; + db.numberOfStudents());&lt;br /&gt;
		&lt;br /&gt;
		//Aufgabe 8&lt;br /&gt;
		System.out.println(&amp;quot;Durchschnittsalter: &amp;quot; + db.averageAge());&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kommentare ==&lt;br /&gt;
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf &amp;quot;bearbeiten&amp;quot; und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit &amp;quot;Vorschau zeigen&amp;quot; kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.&lt;br /&gt;
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>141.23.110.8</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Javakurs/%C3%9Cbungsaufgaben/Textwordcount/Musterloesung&amp;diff=17677</id>
		<title>Javakurs/Übungsaufgaben/Textwordcount/Musterloesung</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Javakurs/%C3%9Cbungsaufgaben/Textwordcount/Musterloesung&amp;diff=17677"/>
		<updated>2012-03-07T13:34:07Z</updated>

		<summary type="html">&lt;p&gt;141.23.110.8: Musterlösung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die Musterlösung kann von eurer Lösung abweichen, da es immer mehrere Varianten gibt ein Problem zu lösen. Im Zweifelsfall Fragt einen Tutor.&lt;br /&gt;
&lt;br /&gt;
== Lösung ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Collections;&lt;br /&gt;
import java.util.Comparator;&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import java.util.Map;&lt;br /&gt;
import java.util.Map.Entry;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * &lt;br /&gt;
 * @author Jonas&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
public class TextWordCount {&lt;br /&gt;
&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		String filename = &amp;quot;&amp;lt;your file name here&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
		String[] fileContent = EasyFileAccess.getFileContent(filename);&lt;br /&gt;
&lt;br /&gt;
		// Eine Hashmap speichert Schlüssel-Wert-Paare. Hier wird für jedes Wort&lt;br /&gt;
		// gespeichert, wie oft es verwendet wurde.&lt;br /&gt;
		Map&amp;lt;String, Integer&amp;gt; words = new HashMap&amp;lt;String, Integer&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
		int totalWordCount = 0;&lt;br /&gt;
&lt;br /&gt;
		for (String line : fileContent) {&lt;br /&gt;
&lt;br /&gt;
			totalWordCount += line.split(&amp;quot; &amp;quot;).length;&lt;br /&gt;
&lt;br /&gt;
			for (String word : line.split(&amp;quot; &amp;quot;)) {&lt;br /&gt;
&lt;br /&gt;
				if (words.containsKey(word)) {&lt;br /&gt;
					// Das Wort ist bereits in der Hashmap enthalten, der gerade&lt;br /&gt;
					// hinterlegte Wert wird um eins erhöht und wieder in die&lt;br /&gt;
					// Hashmap geschrieben.&lt;br /&gt;
					words.put(word, words.get(word) + 1);&lt;br /&gt;
				} else {&lt;br /&gt;
					// Das Wort befindet sich noch nicht in der Hashmap und wird&lt;br /&gt;
					// neu hinzugefügt.&lt;br /&gt;
					words.put(word, 1);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		System.out.println(&amp;quot;Wortanzahl: &amp;quot; + totalWordCount);&lt;br /&gt;
&lt;br /&gt;
		// Um nun die am häufigsten verwendeten Wörter zu ermitteln, muss etwas&lt;br /&gt;
		// getrickst werden. Klar ist, dass nach der Verwendungsanzahl&lt;br /&gt;
		// absteigend sortiert werden muss. Dies lässt sich mit einer Hashmap&lt;br /&gt;
		// allerdings nicht realisieren, da die Schlüssel-Wert-Paare unsortiert&lt;br /&gt;
		// gespeichert werden.&lt;br /&gt;
		// Deswegen wird an dieser Stelle eine Liste von Schlüssel-Wert-Paaren&lt;br /&gt;
		// angelegt, die im nächsten Schritt sortiert wird.&lt;br /&gt;
&lt;br /&gt;
		List&amp;lt;Entry&amp;lt;String, Integer&amp;gt;&amp;gt; sortedList = new ArrayList&amp;lt;Entry&amp;lt;String, Integer&amp;gt;&amp;gt;(&lt;br /&gt;
				words.entrySet());&lt;br /&gt;
&lt;br /&gt;
		// Sortiert wird mit einer Hilfsmethode aus der API. Dieser Methode kann ein &amp;quot;Comparator&amp;quot; übergeben werden, der zwei Objekte aus der Liste vergleicht.&lt;br /&gt;
		&lt;br /&gt;
		Collections.sort(sortedList, new Comparator&amp;lt;Entry&amp;lt;String, Integer&amp;gt;&amp;gt;() {&lt;br /&gt;
			@Override&lt;br /&gt;
			public int compare(Entry&amp;lt;String, Integer&amp;gt; o1,&lt;br /&gt;
					Entry&amp;lt;String, Integer&amp;gt; o2) {&lt;br /&gt;
				//Negatives Vorzeichen deswegen, da absteigend sortiert werden soll.&lt;br /&gt;
				return -o1.getValue().compareTo(o2.getValue());&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
		System.out.println(&amp;quot;Am häufigsten verwendete Wörter: &amp;quot;);&lt;br /&gt;
		//Math.min für den Fall, dass weniger als 20 unterschiedliche Wörter verwendet wurden.&lt;br /&gt;
		for (int i = 0; i &amp;lt; Math.min(20, sortedList.size()); i++) {&lt;br /&gt;
			Entry&amp;lt;String, Integer&amp;gt; entry = sortedList.get(i);&lt;br /&gt;
			System.out.println(entry.getKey() + &amp;quot; (&amp;quot; + entry.getValue()&lt;br /&gt;
					+ &amp;quot; mal)&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		System.out.println(&amp;quot;Insgesamt wurden &amp;quot; + words.size()&lt;br /&gt;
				+ &amp;quot; unterschiedliche Wörter verwendet.&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kommentare ==&lt;br /&gt;
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf &amp;quot;bearbeiten&amp;quot; und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit &amp;quot;Vorschau zeigen&amp;quot; kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.&lt;br /&gt;
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>141.23.110.8</name></author>
	</entry>
	<entry>
		<id>wiki.stageing.freitagsrunde.org//index.php?title=Javakurs/%C3%9Cbungsaufgaben/Canvas/Musterloesung&amp;diff=17676</id>
		<title>Javakurs/Übungsaufgaben/Canvas/Musterloesung</title>
		<link rel="alternate" type="text/html" href="wiki.stageing.freitagsrunde.org//index.php?title=Javakurs/%C3%9Cbungsaufgaben/Canvas/Musterloesung&amp;diff=17676"/>
		<updated>2012-03-07T12:58:09Z</updated>

		<summary type="html">&lt;p&gt;141.23.110.8: Musterlösung für Canvas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Die Musterlösung kann von eurer Lösung abweichen, da es immer mehrere Varianten gibt ein Problem zu lösen. Im Zweifelsfall Fragt einen Tutor.&lt;br /&gt;
&lt;br /&gt;
== Lösung: Point3D.java ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
public class Point3D {&lt;br /&gt;
&lt;br /&gt;
	private double x, y, z;&lt;br /&gt;
&lt;br /&gt;
	public Point3D(double x, double y, double z) {&lt;br /&gt;
		this.x = x;&lt;br /&gt;
		this.y = y;&lt;br /&gt;
		this.z = z;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public String toString() {&lt;br /&gt;
		return &amp;quot;(&amp;quot; + x + &amp;quot;, &amp;quot; + y + &amp;quot;, &amp;quot; + z + &amp;quot;)&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public void changeCoordinates(double newX, double newY, double newZ) {&lt;br /&gt;
		this.x = newX;&lt;br /&gt;
		this.y = newY;&lt;br /&gt;
		this.z = newZ;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public double calcDistance(Point3D other) {&lt;br /&gt;
		return Math.sqrt(Math.pow(other.x - this.x, 2) + Math.pow(other.y - this.y, 2) + Math.pow(other.z - this.z, 2));&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lösung: Sphere.java ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
public class Sphere {&lt;br /&gt;
&lt;br /&gt;
	private Point3D orign;&lt;br /&gt;
&lt;br /&gt;
	private double radius;&lt;br /&gt;
&lt;br /&gt;
	public Sphere(Point3D orign, double radius) {&lt;br /&gt;
		super();&lt;br /&gt;
		this.orign = orign;&lt;br /&gt;
		this.radius = radius;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public void changeOrign(Point3D newOrign) {&lt;br /&gt;
		this.orign = newOrign;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public void changeRadius(double newRadius) {&lt;br /&gt;
		this.radius = newRadius;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public String toString() {&lt;br /&gt;
		return &amp;quot;Sphere(orign: &amp;quot; + orign.toString() + &amp;quot;, radius: &amp;quot; + radius&lt;br /&gt;
				+ &amp;quot;)&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public double calcVolume() {&lt;br /&gt;
		return (4.0 / 3.0) * Math.PI * Math.pow(radius, 3);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public double calcSurfaceArea() {&lt;br /&gt;
		return 4.0 * Math.PI * Math.pow(radius, 2);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lösung: Canvas.java ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Klasse für die Zeichenoberfläche inklusive Einstiegspunkt in das Programm.&lt;br /&gt;
 * @author Jonas&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
public class Canvas {&lt;br /&gt;
&lt;br /&gt;
	private Point3D[] points;&lt;br /&gt;
	private Sphere[] spheres;&lt;br /&gt;
&lt;br /&gt;
	private int sphereCount;&lt;br /&gt;
	private int pointCount;&lt;br /&gt;
&lt;br /&gt;
	public Canvas() {&lt;br /&gt;
		points = new Point3D[3];&lt;br /&gt;
		spheres = new Sphere[3];&lt;br /&gt;
		sphereCount = 0;&lt;br /&gt;
		pointCount = 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fügt einen neuen Punkt zu dieser Zeichenoberfläche hinzu. Erweitert wenn&lt;br /&gt;
	 * nötig das Array.&lt;br /&gt;
	 */&lt;br /&gt;
	public void addPoint3D(Point3D point) {&lt;br /&gt;
		points[pointCount] = point;&lt;br /&gt;
		pointCount++;&lt;br /&gt;
&lt;br /&gt;
		if (pointCount &amp;gt;= points.length) {&lt;br /&gt;
			// Das Array ist voll.&lt;br /&gt;
			// Da in Java die Länge eines Arrays nicht mehr nachträglich&lt;br /&gt;
			// geändert werden kann, wird pohier eine Hilfsfunktion aus der Java&lt;br /&gt;
			// API benutzt, um eine größere Kopie dieses Arrays zu erzeugen.&lt;br /&gt;
&lt;br /&gt;
			// In addSphere eine alternative Implementierung.&lt;br /&gt;
			points = Arrays.copyOf(points, points.length + 3);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Fügt eine neue Kugel zu dieser Zeichenoberfläche hinzu. Erweitert wenn&lt;br /&gt;
	 * nötig das Array.&lt;br /&gt;
	 */&lt;br /&gt;
	public void addSphere(Sphere sphere) {&lt;br /&gt;
		spheres[sphereCount] = sphere;&lt;br /&gt;
		sphereCount++;&lt;br /&gt;
&lt;br /&gt;
		if (sphereCount &amp;gt;= spheres.length) {&lt;br /&gt;
			// Das Array ist voll.&lt;br /&gt;
			Sphere[] newSpheres = new Sphere[spheres.length + 3];&lt;br /&gt;
			for (int i = 0; i &amp;lt; spheres.length; i++) {&lt;br /&gt;
				newSpheres[i] = spheres[i];&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			spheres = newSpheres;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Berechnet das Gesamtvolumen aller Kugeln dieser Zeichenoberfläche.&lt;br /&gt;
	 */&lt;br /&gt;
	public double calcTotalVolume() {&lt;br /&gt;
		double result = 0;&lt;br /&gt;
		for (int i = 0; i &amp;lt; spheres.length; i++) {&lt;br /&gt;
			if (spheres[i] != null) {&lt;br /&gt;
				result += spheres[i].calcVolume();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return result;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Berechnet die Gesamtoberfläche aller Kugeln dieser Zeichenoberfläche.&lt;br /&gt;
	 * &lt;br /&gt;
	 * @return&lt;br /&gt;
	 */&lt;br /&gt;
	public double calcTotalSurfaceArea() {&lt;br /&gt;
		double result = 0;&lt;br /&gt;
		for (int i = 0; i &amp;lt; spheres.length; i++) {&lt;br /&gt;
			if (spheres[i] != null) {&lt;br /&gt;
				result += spheres[i].calcSurfaceArea();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return result;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	@Override&lt;br /&gt;
	public String toString() {&lt;br /&gt;
		String result = &amp;quot;&amp;quot;;&lt;br /&gt;
		for (int i = 0; i &amp;lt; points.length; i++) {&lt;br /&gt;
			// Wenn ein Array initialisiert wird, werden alle Felder mit null&lt;br /&gt;
			// belegt. Deswegen an dieser Stelle die Überprüfung, ob im Array an&lt;br /&gt;
			// der Stelle i ein Element abgelegt ist.&lt;br /&gt;
			if (points[i] != null) {&lt;br /&gt;
				result += points[i].toString() + &amp;quot;\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		// Eine andere Form von for-Schleife zur Iteration über ein Array&lt;br /&gt;
		// Wird wie folgt gelesen:&lt;br /&gt;
		// Für jede Sphere s aus dem Array spheres...&lt;br /&gt;
		for (Sphere s : spheres) {&lt;br /&gt;
			if (s != null) {&lt;br /&gt;
				// füge sie der String-Repräsentation hinzu.&lt;br /&gt;
				result += s.toString() + &amp;quot;\n&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		return result;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Einstiegspunkt in das Programm&lt;br /&gt;
	 */&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		System.out.println(&amp;quot;Erzeuge einen neuen Punkt...&amp;quot;);&lt;br /&gt;
		Point3D p1 = new Point3D(3, 7, 3);&lt;br /&gt;
		System.out.println(&amp;quot;Neuer Punkt p1: &amp;quot; + p1.toString());&lt;br /&gt;
		System.out.println(&amp;quot;Die Koordinaten werden nun geändert&amp;quot;);&lt;br /&gt;
		p1.changeCoordinates(2, 1, 2);&lt;br /&gt;
		System.out.println(&amp;quot;Geänderter Punkt p1: &amp;quot; + p1.toString());&lt;br /&gt;
		System.out.println(&amp;quot;Erzeue einen zweiten Punkt...&amp;quot;);&lt;br /&gt;
		Point3D p2 = new Point3D(2, 2, 3);&lt;br /&gt;
		System.out.println(&amp;quot;Neuer Punkt p2: &amp;quot; + p2.toString());&lt;br /&gt;
		System.out&lt;br /&gt;
				.println(&amp;quot;Distanz zwischen p1 und p2: &amp;quot; + p1.calcDistance(p2));&lt;br /&gt;
		System.out.println(&amp;quot;Erzeuge eine neue Kugel...&amp;quot;);&lt;br /&gt;
		Sphere s1 = new Sphere(p1, 2);&lt;br /&gt;
		System.out.println(&amp;quot;Neue Kugel s1: &amp;quot; + s1.toString());&lt;br /&gt;
		System.out.println(&amp;quot;Oberfläche der Kugel: &amp;quot; + s1.calcSurfaceArea());&lt;br /&gt;
		System.out.println(&amp;quot;Volumen der Kugel: &amp;quot; + s1.calcVolume());&lt;br /&gt;
&lt;br /&gt;
		System.out.println(&amp;quot;Erzeuge eine neue Zeichenoberfläche...&amp;quot;);&lt;br /&gt;
		Canvas c = new Canvas();&lt;br /&gt;
		System.out.println(&amp;quot;Füge 4 Punkte der Zeichenoberfläche hinzu...&amp;quot;);&lt;br /&gt;
		c.addPoint3D(p1);&lt;br /&gt;
		c.addPoint3D(p2);&lt;br /&gt;
		c.addPoint3D(new Point3D(1, 2, 3));&lt;br /&gt;
		c.addPoint3D(new Point3D(4, 9, -2));&lt;br /&gt;
		System.out.println(&amp;quot;Aktueller Inhalt der Zeichenoberfläche:&amp;quot;);&lt;br /&gt;
		System.out.println(c.toString());&lt;br /&gt;
&lt;br /&gt;
		System.out.println(&amp;quot;Füge s1 viermal zur Zeichenoberfläche hinzu...&amp;quot;);&lt;br /&gt;
		c.addSphere(s1);&lt;br /&gt;
		c.addSphere(s1);&lt;br /&gt;
		c.addSphere(s1);&lt;br /&gt;
		c.addSphere(s1);&lt;br /&gt;
		System.out.println(&amp;quot;Gesamtoberfläche der Zeichenoberfläche: &amp;quot;&lt;br /&gt;
				+ c.calcTotalSurfaceArea());&lt;br /&gt;
		System.out.println(&amp;quot;Gesamtvolumen der Zeichenoberfläche: &amp;quot;&lt;br /&gt;
				+ c.calcTotalVolume());&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kommentare ==&lt;br /&gt;
Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf &amp;quot;bearbeiten&amp;quot; und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)&lt;/div&gt;</summary>
		<author><name>141.23.110.8</name></author>
	</entry>
</feed>