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

Ein Java Fenster erzeugen mit dem JFrame

Java-Fenster-erzeugen

Ein Java Fenster erzeugen mit Swing. Java Swing – was ist das? Zum Erstellen von grafischen Benutzeroberflächen, kurz GUI, bietet Java eine eigene Standardklasse an. Diese Klasse nennt sich Swing. Aus dieser Swing-Klasse heraus können Objekte erstellt werden. Diese Objekte lassen sich in vier verschiedene Kategorien einteilen. Fenster und Dialoge bilden das Grundgerüst einer grafischen […]

Warum Java Kommentare immer ein Mittel der Kommunikation sind

Java Kommentare Kommunikation

Kennst Du die Bücherreihe „Miteinander reden“ von Schulz von Thun? Falls Du an der Uni warst oder bist, gehört dieses Buch zur Standardlektüre im Fach Schlüsselkompetenz. Denn ein Java Entwickler, welcher im Team arbeitet, muss klar und deutlich kommunizieren können. Und klar und deutlich heißt nicht, dass die Aussprache Deiner Worte verständlich sein soll. Nein […]

Java Übung 31: Speichere deine Würfe im Array

Java Übung Array Würfelspiel

In dieser Java Übung soll ein Würfelspiel simuliert werden. Lege eine Klasse namens, Würfelspiel an. Diese Klasse enthält eine statische Methode, namens würfeln(). Diese Methode erwartet einen Parameter vom Datentyp Integer, namens „anzahlWuerfe“. Diese Variable/Parameter repräsentiert die Anzahl der Würfe. Nachdem der Methode die Anzahl der Würfe übergeben wurde, soll die Methode Zufallszahlen zwischen 1 […]

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

Ende vom Java Blog?

Falls du hier schon länger dabei bist, wird dir aufgefallen sein – dass kaum noch Beiträge veröffentlicht werden. Das tut mir wirklich leid und dafür möchte ich mich auch entschuldigen. Ich weiß, dass Einige unter Euch den Java-Blog wirklich lieben. Aber es ist verdammt schwierig so ein aufwendiges Thema – stilvoll, unterhaltend und methodisch umzusetzen. […]

Java Übung 27 – Auf zur Mathe-Olympiade

Java Übung Mathe Olympiade

In dieser Java Übung möchte ich mit dir ein Programm erstellen, welches ein Mathematik-Test oder eine Mathe-Olympiade simuliert. Du kennst das vielleicht noch aus der Schule. Matheolympiade- Da wurden aus allen vier Grundrechenarten, Aufgaben formuliert. Die Schüler mussten diese Aufgaben lösen. Die Lehrer kontrollierten die Lösungen. Und der Schüler, welcher die wenigsten Fehler hatte – […]

So erstellst du deine ersten Java Klassen mit Eclipse

Java Klassen sind Baupläne für Java Objekte. Und da Java eine objektorientierte Programmiersprache ist, sind Java Klassen somit ein elementarer Bestandteil. In diesem Beitrag möchte ich dir zeigen, wie du eine Java Klasse in Eclipse erstellen kannst. Ich möchte dir außerdem zeigen, was physikalisch in deinem Projekt passiert. Ganz zum Schluss zeige ich dir noch, […]

Den Java Vererbungsbaum nach dem Ist-Es-Prinzip richtig entwerfen

Java Vererbungsbaum

Vererbungsbaum in Java – klingt erstmal komisch. Dennoch wird dies so bezeichnet. Gemeint sind damit – die einzelnen Hierarchiestufen oder Vererbungsebenen – von der Superklasse bis runter zu den Kindklassen. Wie sieht das nun konkret aus? Vererbung bedeutet: Du definierst einen allgemeinen Typen – zB. Möbel Und dann implementierst du eine Unterklasse, welche die Oberklasse […]

Java Übung 16 – Bestimme den größten gemeinsamen Teiler

Java Übung Teiler

In dieser Java Übung möchte ich, dass du den größten gemeinsamen Teiler zwei Zahlen ermittelst. Ich möchte, dass du das Ganze mit einer while-Schleife umsetzt. Und wie? Du legst eine neue Klasse „GGT“ (größter gemeinsamer Teiler) an. In diese Klasse implementierst du eine Klassenmethode „berechneGGT“. Diese erwartet zwei Argumente vom Datentyp Integer.