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

So kannst du Java Arrays mit for Schleife füllen und auslesen

Java Arrays For Schleife

Wir haben in einem anderen Beitrag bereits über Java Arrays gesprochen. So ein Array speichert Zahlen, Texte oder Objekte in eine Art Liste. Und dann kannst du ganz bequem über den Index das Array füllen und die bereits enthaltenen Werte abrufen. Ganz bequem? So, wie ich dich aus dem letzten Beitrag entlassen habe, war das […]

Drei Möglichkeiten um Java Objekte zu zerstören

Java Objekte zerstören

Java Objekte leben genau solange, wie eine Referenzvariable auf sie zeigt. Wenn dieser Zeiger nicht mehr existiert, wird dieses Objekt aufgeben. Und wenn dieses Objekt erst einmal aufgegeben wurde, dann kommt der Garbage Collector und entsorgt dieses. Aber wie kannst du nun am Sinnvollsten Objekte aufgeben? Lass es uns herausfinden.

Java Binärzahl in Dezimalzahl umwandeln – So geht’s.

Java-Binärzahl-umrechnen

Erinnerst du dich? In einer der letzten Beiträge haben wir uns die Zusammenhänge zwischen dem dualen und dem dezimalen Zahlensystem angeschaut. Aber wir haben noch keine Java Binärzahl in eine Dezimalzahl verwandelt. Zumindestens nicht praktisch…. Stattdessen…. Haben wir festgestellt, dass beide Zahlensysteme im Grunde genommen sehr ähnlich sind. Beim Dezimalsystem spielt die Zahl 10, als […]

So kannst du Eclipse installieren

Eclipse installieren

Das Schöne an Eclipse ist, es läuft auf sämtlichen Betriebssystemen. Eclipse wird einfach auf der Webseite des Herstellers herunter geladen und kann dann installiert werden. Dabei stehen dir verschiedene Versionen zur Verfügung.

Nutze das Keyword this für deine Java Konstruktoren

Java konstruktoren this

Es ist gemein. Wahrscheinlich hast den Beitrag zu den lokalen Variablen gelesen. Vielleicht hast du auch den Artikeln zum Anlegen und Überladen von Java Konstruktoren gelesen. Und wenn du die beschriebene Inhalte selbst ausprobiert hast…… Dann hast du dir wahrscheinlich sehr viele lokale Variablennamen für die Parameterliste ausdenken müssen.

So kannst du Java Konstanten bei der Programmierung nutzen

Java Konstanten – was kann man sich darunter vorstellen? Du kennst Konstanten in der Mathematik. Die Kreiszahl Pi ist so eine konstante Zahl. Diese Zahl ändert sich niemals. Sie beträgt immer rund 3,141592. In der Physik gelten die Lichtgeschwindigkeit, der Erdradius oder der absolute Nullpunkt als konstant. Selbst die Geschwindigkeit mit der sich die Erde […]

So kannst du Java Methoden überladen

Java Methoden überladen

Im Mittelalter war es üblich, dass Könige oder Adlige Briefe durch ein Siegel verschlossen. Das Siegel hatte die Aufgabe den Inhalt des Briefes vor dem gewaltsamen Öffnen zu schützen. Außerdem hatte das Siegel die Aufgabe einen Eigentumsnachweis sicher zu stellen. Und jeder, welcher das Siegel des Königs sah, wusste: „Das königliche Siegel – Oh ein […]

So lassen sich Java Strings in char zerlegen

Java Strings zerlegen char

Java Strings sind Zeichenketten. Und diese Zeichenketten lassen sich aufsplitten und in ihre Einzelteile zerlegen. Ich möchte dir in diesem Beitrag Möglichkeiten vorstellen, wie du Strings in Character-Datentypen zerlegen, extrahieren und die Einzelteile in Arrays speichern kannst.

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 […]