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

