eccolo:
codice:
import java.math.*;
import java.util.*;
public class Fattoriale{
	public static void main(String args[]){
		Scanner read = new Scanner(System.in);
		long n = -1;
		System.out.println("__CALCOLO DEL FATTORIALE__");
		do{
			System.out.println("Inserire un numero intero positivo:");
			boolean m = read.hasNextInt();
			if(m == true)
				n = read.nextInt();
			else
				read.next();
		}
		while(n < 0);
		BigInteger bifatt = BigInteger.valueOf(1);
		for(long i=n; i >= 1; i--){
			BigInteger bii = BigInteger.valueOf(i);
			bifatt = bifatt.multiply(bii);
		}
		System.out.println(n+"!=" + bifatt);
	}
}
solo che non capisco una cosa... nel for viene modificato più volte la variabile del fattoriale... mentre tu prima mi hai detto che i bigI sono immutabili, in che senso sono immutabili?