Mega Code Archive

 
Categories / Java / Data Type
 

Demonstration of high-precision integer arithmetic with the BigInteger class

/* Java Programming for Engineers Julio Sanchez Maria P. Canton ISBN: 0849308100 Publisher: CRC Press */ // Java for Engineers //Filename: BigIFact //Reference: Chapter 22 //Description: //         Demonstration of high-precision integer arithmetic //         with the BigInteger class. Program calculates the //         factorial of a big integer number //Requires: //         Keyin class in current directory import java.math.BigInteger; public class BigIFact {   public static void main(String[] args) {     int v; // Input     BigInteger p = BigInteger.valueOf(1); // Factor     System.out.println("Big integer factorial routine\n");     v = Keyin.inInt("Enter value: ");     // Calculate factorial by iteration     for (int i = 1; i <= v; i++)       p = p.multiply(BigInteger.valueOf(i));     // Display result     System.out.println(p);   } } //********************************************************** //********************************************************** //Program: Keyin //Reference: Session 20 //Topics: //1. Using the read() method of the ImputStream class //in the java.io package //2. Developing a class for performing basic console //input of character and numeric types //********************************************************** //********************************************************** class Keyin {   //*******************************   //   support methods   //*******************************   //Method to display the user's prompt string   public static void printPrompt(String prompt) {     System.out.print(prompt + " ");     System.out.flush();   }   //Method to make sure no data is available in the   //input stream   public static void inputFlush() {     int dummy;     int bAvail;     try {       while ((System.in.available()) != 0)         dummy = System.in.read();     } catch (java.io.IOException e) {       System.out.println("Input error");     }   }   //********************************   //  data input methods for   //string, int, char, and double   //********************************   public static String inString(String prompt) {     inputFlush();     printPrompt(prompt);     return inString();   }   public static String inString() {     int aChar;     String s = "";     boolean finished = false;     while (!finished) {       try {         aChar = System.in.read();         if (aChar < 0 || (char) aChar == '\n')           finished = true;         else if ((char) aChar != '\r')           s = s + (char) aChar; // Enter into string       }       catch (java.io.IOException e) {         System.out.println("Input error");         finished = true;       }     }     return s;   }   public static int inInt(String prompt) {     while (true) {       inputFlush();       printPrompt(prompt);       try {         return Integer.valueOf(inString().trim()).intValue();       }       catch (NumberFormatException e) {         System.out.println("Invalid input. Not an integer");       }     }   }   public static char inChar(String prompt) {     int aChar = 0;     inputFlush();     printPrompt(prompt);     try {       aChar = System.in.read();     }     catch (java.io.IOException e) {       System.out.println("Input error");     }     inputFlush();     return (char) aChar;   }   public static double inDouble(String prompt) {     while (true) {       inputFlush();       printPrompt(prompt);       try {         return Double.valueOf(inString().trim()).doubleValue();       }       catch (NumberFormatException e) {         System.out             .println("Invalid input. Not a floating point number");       }     }   } }