import javax.swing.JOptionPane; import java.util.Arrays; import flanagan.io.Db; import java.math.BigInteger; public class bigIntegerFakultaet { public static void main(String [] args) { // init variables int factorial = 0; BigInteger res = BigInteger.valueOf(1); BigInteger resn = BigInteger.valueOf(1); // get factorial input try { factorial = Db.readInt("factorial = "); System.out.println("factorial input = " + factorial); } catch (NumberFormatException e) { Db.show("Error: no valid integer input provided"); System.exit(1); } // print dashes for (int i = 0; i < 80; i++) { System.out.format("-"); } System.out.println(); // validate that: factorial >= 0 if (factorial < 0) { Db.show("Error: input cannot be negative"); System.exit(1); } // print top table row System.out.format("n \tn!\n"); // print dashes for (int i = 0; i < 80; i++) { System.out.format("-"); } System.out.println(); // special case: 0! = 1 if (factorial == 0) { System.out.format("%d \t%d (%d-digit)\n", 0, 1, res.toString().length()); System.exit( 0 ); } // use big integer BigInteger bigFactorial = BigInteger.valueOf(factorial); for (BigInteger n = BigInteger.valueOf(1); n.compareTo(bigFactorial) <= 0; n = n.add(BigInteger.ONE)) { res = n.multiply(resn); // current result resn = res; // new overall result System.out.format("%d \t%d (%d-digit)\n", n, res, res.toString().length()); } // print dashes for (int i = 0; i < 80; i++) { System.out.format("-"); } System.out.println(); System.out.println("Successfully executed the task ..."); System.exit(0); } }