Author Topic: Java - Multi byte addition source code using stack  (Read 1142 times)

kathir

  • Administrator
  • Sr. Member
  • *****
  • Posts: 283
Java - Multi byte addition source code using stack
« on: December 08, 2011, 06:21:12 pm »
Here is the Java source code for multibyte addition which can take any number of digits as input and prints out the result nicely using stack.

Code: (Java)
//Source Code Listing

import java.lang.*;
import java.util.*;
import java.io.*;
 
 
class MultiByteAddition
{
      public static String ReadString()
      {
           try
           {
                 InputStreamReader input = new InputStreamReader(System.in);
                 BufferedReader reader = new BufferedReader(input);
                 return reader.readLine();
           }
           catch (Exception e)
           {

                 e.printStackTrace();
                 return "";
           }
      }


      public static int ReadInteger()
      {
           try
           {
                 InputStreamReader input = new InputStreamReader(System.in);
                 BufferedReader reader = new BufferedReader(input);
                 return Integer.parseInt(reader.readLine());
           }
           catch (Exception e)
           {

                 e.printStackTrace();
                 return 0;
           }
      }
      
      
 
      public static void main(String[] args)
      {
      
         System.out.println("\nEnter 1st Number: "); 
         
         String buffer1 = ReadString();

         System.out.println("\nEnter 2nd Number: "); 
         String buffer2 = ReadString();

         Stack<Integer> numberStack1 = new Stack<Integer>();
         Stack<Integer> numberStack2 = new Stack<Integer>();
         Stack<Integer> resultStack  = new Stack<Integer>();

         char[] arr1 = buffer1.toCharArray();
         for(int i = 0; i < arr1.length; i++)
         {
            char ch = arr1[i];
            if(ch >= '0' && ch <= '9')
               numberStack1.push(ch - '0');
            else
            {
               System.out.println("Invalid Input - Use digits 0 - 9");
               return;
            }
         }

         char[] arr2 = buffer2.toCharArray();
         for(int i = 0; i < arr2.length; i++)
         {
            char ch = arr2[i];
            if (ch >= '0' && ch <= '9')
               numberStack2.push(ch - '0');
            else
            {
               System.out.println("Invalid Input - Use digits 0 - 9");
               return;
            }
         }

         int remainder = 0;
         int a = 0;
         int b = 0;
         int length = (numberStack1.size() > numberStack2.size()) ? numberStack1.size() : numberStack2.size();
         for (int i = 0; i < length; i++ )
         {
            a = b = 0;
            if (numberStack1.size() >= 1)
               a = numberStack1.pop();
            if (numberStack2.size() >= 1)
               b = numberStack2.pop();
            int result = a + b + remainder;
            remainder = result / 10;
            result = result % 10;
            resultStack.push(result);
         }
         System.out.print("The result is: ");
         while (resultStack.size() >= 1)
         {
            System.out.print(resultStack.pop());
         }
         System.out.println();
      }
}

[b]Sample output: [/b]

Enter 1st number: 123456789123456789123456789
Enter 2nd number:123456789

The result is: 123456789123456789246913578

Press any key to continue . . .

 


Disclaimer: This web site is for educational and informational purposes only. Click here to read the Disclaimer.
Content copyright 2010-2014. Kathiresan. All rights reserved.
This page is using SMF version 2.0.1