How do I fix this infanite while loop : I'm making this to be able to calculate factorials. I need it to say a sentence if they input a value over 20 but I have created and infinite loop. My line that says 

    System.out.print ("ERROR: The result is inaccurate because the number was    too large for the data type");}

is an infinite loop. I Cant seem to figue out how to fix it.  I have tried moving the placement of things but I cant figure it out.  Any help is appreciated. 

    import java.util.Scanner;
    import java.text.NumberFormat;

    public class FactoralApp
    {
	public static void main(String[] arge)
	{

		//Welcome users the the application and get user input
		System.out.print("Welcome to the Factoral Calculator" + "\n");


		int num;

 		Scanner sc = new Scanner(System.in);
 		String choice = "y";
		while (choice.equalsIgnoreCase("y")) {  //set up the while loop so that users can find many factorials

		long factorial=1; //initialize variables


		System.out.print("\n" + "Enter an integer between 1 and 20: "); //promt users for input
		num = sc.nextInt();

		for (int i = num; i >= 1; i--){  //Calculate factorial
    	factorial = factorial * i;}

		while (num > 20) {
			System.out.print ("ERROR: The result is inaccurate because the number was too large for the data type");}




		// Format and display the results

		NumberFormat number = NumberFormat.getNumberInstance();

		String message =
					("\n" + "The factoral of " + num + " is " + number.format(factorial) + "." + "\n"); //create message

		System.out.println(message);  // Output the formated message

		System.out.print ("Continue (y/n): "); //promt users for input
		choice = sc.next();
		} // End While



	} // End main ()



    } // End Class

