M
Mister Mainframe
Gast
Einen schönen Gruß an alle Forums Mitglieder. Ich bin neu hier und hätte mal eine Frage bzgl. einem kleinen Programm von mir, welches die Fakultät einer ganzen Zahl ausrechnet. Es handelt sich um genau zu sein um eine Übungsaufgabe aus dem neuen Java Buch von Dietmat Ratz.
Hier also der Code:
Mein Problem ist nun, daß er für die Eingaben 0 und 1 die richtigen Ergebnisse ausspuckt (sprich: 1 und 1), aber leider ab der zwei viel zu hohe Ergebnisse liefert. Für 2! gibt er 42 als Ergebnis aus, für 3! bereits 30816.
Vielleicht kann ja jemand von euch mir sagen, wo ich mich in meinem Algorithmus vertan hab.
Vielen Dank im Voraus!
Hier also der Code:
Code:
public class Fakultaet {
public static void main(String[] positiveLong) {
long n = Long.parseLong(positiveLong[0]);
FakultaetsAlgo nummerEins = new FakultaetsAlgo(n);
nummerEins.rechnung();
nummerEins.getErgebnis();
}
}
import java.math.*;
public class FakultaetsAlgo {
private BigInteger zwischenErg;
private BigInteger ergebnis = new BigInteger("1");
private long eingabe;
private StringBuffer puffer1 = new StringBuffer();
private String stringI;
public FakultaetsAlgo(long input) {
eingabe = input;
}
public void rechnung() {
for (long i = eingabe; i >= 1; i--) {
puffer1.append(i);
stringI = puffer1.toString();
zwischenErg = new BigInteger(stringI);
ergebnis = ergebnis.multiply(zwischenErg);
}
}
public void getErgebnis() {
System.out.println(eingabe + "! = " + ergebnis);
}
}
Vielleicht kann ja jemand von euch mir sagen, wo ich mich in meinem Algorithmus vertan hab.
Vielen Dank im Voraus!