Skip to main content

Java Übung 18: Berechne die Fakultät

In dieser Java Übung geht es um die Fakultät aufeinander folgender Zahlen.

Für alle, bei denen der Mathe-Unterricht genauso lange her ist, wie bei mir: 🙂
Die Fakultät ist das Produkt aufeinander folgender natürlicher Zahlen.

Zum Beispiel:
Die Fakultät von 2 ist: 1*2=2
Die Fakultät von 5 ist: 1*2*3*4*5=120

So – ich hoffe, dass ich mich nicht verrechnet habe. 🙂

  • Also erstelle eine Klasse Fakultät.
  • In dieser Klasse implementierst du eine Methode, welche eine Zahl als Argument übergeben bekommt.
  • Und dann liefert die Methode die Fakultät, per Bildschirmausgabe zurück.
    Aufgerufen wird die Methode in der Main-Methode.

Alles klar?
Na dann viel Spaß bei dieser Java Übung.


Ich schlage vor, du löst diese Java Übung mit einer for Schleife.

Ich stelle mir die Schleifenbedingung so vor:

  • Startwert für i ist 1.
    Denn du rechnest nur mit natürlichen Zahlen.
    Außerdem, wenn bei einer Multiplikation eine Null im Spiel ist, wird das Ergebnis null.
    Also bei i=1 starten.
  • Die Schleife bricht ab, wenn i größer ist, als die übergebene Zahl aus der Parameterliste.
    Somit ist die Abbruchbedingung: i<=zahl;
  • Und i wird ganz normal inkrementiert / hochgezählt.

Somit würde der Schleifenkopf so aussehen: for (int i = 1; i<=zahl;++i)

Und nun zum Rumpf.
Im Schleifenrumpf benötigst du eine Variable, welche das Ergebnis speichert.
Also beispielsweise so: fakultaet=fakultaet*i;

Da die Variable, nachdem die Schleife durchlaufen wurde, als Bildschirmausgabe zurückgeben werden soll - Musst du die Variable außerhalb der Schleife anlegen.

Da die Variable innerhalb der Methode lediglich eine lokale Variable ist, musst du ihr einen Wert zuweisen.

Alles klar?
Dann lass uns das Ding bauen. 🙂
Und so würde der Java Code dazu aussehen:


public class Fakultaet {

	static void berechneFakultaet(int zahl) {
		int fakultaet = 1; //außerhalb der Schleife anlegen und Wert zuweisen
		for (int i = 1; i <= zahl; ++i) {
			fakultaet = fakultaet * i;
		}
		System.out.println("Die Fakultät von " + zahl + " ist: " + fakultaet);
	}


	public static void main(String[] args) {
		berechneFakultaet(2);
		berechneFakultaet(5);
		berechneFakultaet(31);
	}
}

Klicke auf "Run" und schau, was passiert.

Cool, mit den Zahlen 2 und 5 lag ich nicht falsch. 🙂
Bei 31 ist Schluss.
Versuch ruhig einmal der Methode einen Wert über 31 zu übergeben.

Und was passiert?
Irgendein Mist, oder?

Das Problem ist, dass die Zahl zu groß wird.
Sie liegt dann außerhalb des Datenbereiches für Integer.
Und da unsere lokale Variable "fakultaet" eine Integer-Variable ist - ist dann auch schon Schluss.

Für größere Zahlen kannst du die Fakultät auch in einer long Variable speichern.

Ich habe deshalb eine zweite Methode, namens "berechneFakultaetLong" geschrieben.


public class Fakultaet {

	static void berechneFakultaet(int zahl) {
		int fakultaet = 1; // Variable als Integer Datentyp
		for (int i = 1; i <= zahl; ++i) {
			fakultaet = fakultaet * i;
		}
		System.out.println("Die Fakultät von " + zahl + " ist: " + fakultaet);
	}

	static void berechneFakultaetLong(int zahl) {
		long fakultaet = 1; //Variable als long Datentyp
		for (int i = 1; i <= zahl; ++i) {
			fakultaet = fakultaet * i;
		}
		System.out.println("Die Fakultät von " + zahl + " ist: " + fakultaet);
	}

	public static void main(String[] args) {
		berechneFakultaet(2);
		berechneFakultaet(5);
		berechneFakultaet(31);
		berechneFakultaetLong(39);
	}
}

Jetzt komm ich immerhin bis zur Fakultät von 39.
Dann ist auch hier schon Schluss.

Du siehst, irgendwann stößt auch Java auf Grenzen.

Aber mal ehrlich.
Zahlen, welche größer als 2.304.077.777.655.037.952 brauchen wir eigentlich nicht. 🙂


Ähnliche Beiträge

Das Instanzieren von Java Klassen verhindern

Java Objekte Instanzieren verhindern

Die Instanzierung von Java Klassen verhindern. Was heißt das? Instanzen sind die Objekte einer Java Klasse. Und Instanzieren oder Instanzierung heißt nichts anderes, als Objekterstellung. Aber was soll das? Oder mal anders gefragt: Wieso sollte man verhindern, dass eine Java Klasse – Objekte erstellen kann? Schließlich sind doch Objekte der Sinn und Zweck jeder objektorientierten […]

So richtest du einen Schreibschutz für deine Java Variablen ein

Stell dir vor: Du hast erfolgreich dein erstes Programm für die Personalabteilung aufgesetzt. Du hast deine ersten 1000 Datensätze schön sauber angelegt. Und nun kommt dein Kollege und überschreibt die Vornamen der ersten 100 Mitarbeitern. Na schöne Sch…. 🙂 Wie kann das passieren? Wie kann man das verhindern? Du brauchst eigentlich nur deine Java Variablen […]

Achte bei Java Methoden stets auf die Wertübergabe

Java Methoden Wertübergabe

Ich lege gleich los…. Schau dir diesen Code einmal an. Welche Zahl wird wohl auf der Bildschirmanzeige zurückgegeben? public class MethodenWertUebergabe { static int verdoppele (int i){ i=i*2; return i; } public static void main(String[] args) { int i = 2; verdoppele(i); System.out.println(i); } }

Das Java Vererbung Konzept in einem Rollenspiel

Java ist eine objektorientierte Programmiersprache. Und das bedeutet nicht nur, dass du Objekte einer Java Klasse erzeugen kannst. Es bedeutet auch, dass Java Klassen von anderen Klassen erben können. Wieso das Ganze? Stell dir einmal ein Rollenspiel vor. Wie würdest du ein Rollenspiel entwerfen? In einem Rollenspiel gibt es magische Gegenstände. Zauberringe, Zauberstäbe, welche bei […]

Java Übung: Alles beginnt mit Hello World

Java Übung Hello World

Alles beginnt mit „Hello World“. Sämtliche Java Bücher beginnen mit diesem ersten Beispiel. Auch die Java Übungen sollen mit diesem ersten Programm starten. Definiere eine Klasse „Hello World“. Implementiere die Main Methode. Die Main Methode soll bei Programmaufruf die Bildschirmanzeige „Hallo Welt“ zurückgeben. Die Lösung zur Java Übung „Hallo Welt“ public class HelloWorld{ public static […]

10 ganz nützlichen Feature der Klasse Java Math

In diesem Beitrag geht es um eine spezielle Java Klasse. Die Klasse nennt sich Java Math. Diese ist in der Standardbibliothek von Java enthalten. Warum solltest du diese Klasse kennen? Die Math Klasse bietet dir einen Menge Methoden an, welche zur Berechnung von mathematischen Gleichungen ganz hilfreich sind. Aber auch für Nichtmathematiker ist etwas dabei. […]

So kannst du Java installieren

Java installieren

Bevor du loslegst und deine ersten Java Programme schreibst, benötigst du die entsprechende Arbeitsumgebung. Du solltest also Java installieren. Und diese Arbeitsumgebung beinhaltet dann Bibliotheken für die einzelnen Java-Standard-Klassen, Dateien um deine Programme auszuführen. Dateien um deine Programme zu packen, Logische Verzeichnisstrukturen

3 Möglichkeiten um Vererbung von Java Klassen zu verhindern, zu verbieten oder ausschließen

Java Vererbung verhindern

Die ganze Java Vererbung für bestimmte Klassen ausschließen bzw. verhindern oder verbieten. Was soll das? Für bestimmte Java Klassen soll die Vererbung ausgeschlossen werden. Es soll also verhindert werden, dass Elternklassen – Kindklassen bekommen können. Klingt ein bisschen wie Verhütung, oder? Denn wie auch im echten Leben, können Kinder zu kleinen Tyrannen werden. Sie bedienen […]

Java Polymorphie – besserer Code und mehr Möglichkeiten

Java Polymorphie Vorteile

Polymorphie ist das Herzstück jeder objektorientierten Sprache. Nicht nur in Java – auch in Python, Javascript und in anderen Sprachen. Aber was bedeutet Polymorphie eigentlich? Polymorphie oder auch Polymorphismus genannt, kommt aus dem Griechischen. Es bedeutet Vielgestaltigkeit. Etwas freier übersetzt, kannst du es auch als Facettenreichtum bezeichnen. Im Grunde genommen zielt die ganze Java Vererbung […]