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

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 pro
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 pro

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site