Write a structured program using basic java programming that can accept two inte
ID: 3855538 • Letter: W
Question
Write a structured program using basic java programming
that can accept two integer numbers up to 40 digits and perform the followings:
1. Add the two numbers and display the result.
2. The result number should be separated by commas.
For example
If inputs are:
Number1: 236598745632
Number2: 2453254365546764765
The output should be:
236,598,745,632 +
2,453,254,365,546,764,765
-------------------------------------
2,453,254,602,145,510,397
Notes:
You must read the two input numbers as string objects, then verify if the input is correct (i.e. all digit characters).
You may assume that your program only works for positive integer numbers.
You cannot use any of BigDecimal / BigInteger / double / long / int types for your calculations.
Explanation / Answer
Java program:
public class Addition {
public static void main(String[] args) {
String number1="236598745632";
String number2="2453254365546764765";
//Size of number 1
int number1Size=(number1.length()+(number1.length()/3));
int number1ArrayLen=(number1Size%2==0)?number1Size-1:number1Size;
//Size of number 2
int number2Size=(number2.length()+(number2.length()/3));
int number2ArrayLen=(number2Size%2==0)?number2Size-1:number2Size;
char []number1Array=new char[number1ArrayLen];
char []number2Array=new char[number2ArrayLen];
char []output=new char[number1ArrayLen>number2ArrayLen?number1ArrayLen+1:number2ArrayLen+1];
System.out.println("Number 1: "+number1);
System.out.println("Number 2: "+number2);
//populate value
for (int i = number1Array.length-1,j=number1.length()-1,index=1; i >=0; i--,j--,index++) {
if(index%4==0){
number1Array[i]=',';
j++;
}else{
number1Array[i]=number1.charAt(j);
}
}
System.out.println("The output should be:");
System.out.print(number1Array);
System.out.println(" +");
//populate value
for (int i = number2Array.length-1,j=number2.length()-1,index=1; i >=0; i--,j--,index++) {
if(index%4==0){
number2Array[i]=',';
j++;
}else{
number2Array[i]=number2.charAt(j);
}
}
System.out.println(number2Array);
System.out.println("----------------------------------");
int carry=0;
for (int num1 = number1Array.length-1,num2 = number2Array.length-1,out=output.length-1,index=1; out >=0; num1--,num2--,out--,index++) {
if(index%4==0){
output[out]=',';
}else{
int result=(num1>=0?(Integer.parseInt(String.valueOf(number1Array[num1]))):0)+(num2>=0?(Integer.parseInt(String.valueOf(number2Array[num2]))):0)+ carry;
carry=0;
if(String.valueOf(result).length()==2){
output[out]=String.valueOf(result).charAt(1);
carry=Integer.parseInt(String.valueOf(String.valueOf(result).charAt(0)));
}else{
if(!(out==0 && result==0)){
output[out]=String.valueOf(result).charAt(0);
}
}
}
}
System.out.println(output);
}
}
OUTPUT:
Number 1: 236598745632
Number 2: 2453254365546764765
The output should be:
236,598,745,632 +
2,453,254,365,546,764,765
----------------------------------
2,453,254,602,145,510,397
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.