Javas type int has a limit on how large an integer it can st
Java\'s type  int has a limit on how large an integer it can store . This limit can be circumvented by representing an integer as an array of digits.
 
 Write a program that prompts the user to enter two big integers , which are stored as strings . The program should use the array  method to add the two numbers and then print the result.
Solution
Hi,
Please see below the class for integer array addition. Please comment for any queries/feedbacks.
Thanks,
Anita Joseph
IntArrayTester.java
import java.util.Scanner;
 public class IntArrayTester {
    public static void main(String [] args){
        int maxLength=0;
        int [] digits1 = null;
        int [] digits2 = null;
        Scanner scan= new Scanner(System.in);
       
        //Reading the integers as Strings
        System.out.println(\"Enter big Integer1 :\");
        String integer1=scan.nextLine();
        System.out.println(\"Enter First big Integer2 :\");
        String integer2=scan.nextLine();
      
        if(integer1.length()>integer2.length()){
            maxLength = integer1.length();
        }
        else{
            maxLength =integer2.length();
        }
        //Generating Integer array for String inputs
        digits1= generateIntegerArray(integer1,maxLength);
        digits2= generateIntegerArray(integer2,maxLength);
       
       //Addition Process
        int carry = 0; //Initiallt carry will be set as 0
        int[] result = new int[digits1.length];
        for (int i = digits1.length - 1; i >= 0; i--) { // Addition starts from left hand digits (1\'s place)
            int val = digits1[i] + carry+ digits2[i]; //Adding 1\'s place digits of 2integers + carry if any
            result[i] = val % 10; // Setting results digit
            carry = val / 10; //FInding carry value
        }
       
        //Adding one more place for last carry,if any
        if (carry == 1) {
            result = new int[digits1.length + 1];
            result[0] = 1;
        }
        System.out.print(\"Sum is: \" );
        for(int i=0;i<result.length;i++){
            System.out.print(result[i]);
        }
    }
   public static int[] generateIntegerArray(String integerStr, int length){
        int [] intArr = new int[length];
        //prepending zeros to small string
        if(integerStr.length()<length){
            int noOfzerosToBeAdded= length -integerStr.length();
            for(int k=0;k<noOfzerosToBeAdded;k++){
                integerStr = \"0\"+integerStr;
            }
        }
        //Setting STring characters to corresponding digit array
        for(int i=length-1; i>=0; i--){
            intArr[i] = Character.getNumericValue(integerStr.charAt(i));
        }
       return intArr;
    }
 }
Sample output:
Enter big Integer1 :
 40000000
 Enter First big Integer2 :
 8797
 Sum is: 40008797
-----------------------------
Enter big Integer1 :
 999
 Enter First big Integer2 :
 1
 Sum is: 1000
----------------------------------
Enter big Integer1 :
 90
 Enter First big Integer2 :
 465768
 Sum is: 465858


