Advertisement
Chiddix

Add

May 24th, 2016
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.82 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3.  
  4. final class Add {
  5.  
  6.     public static void main(final String[] args) {
  7.         try (final Scanner scanner = new Scanner(System.in)) {
  8.             final int[] one = toArrayReverse(scanner.nextLine());
  9.             final int[] two = toArrayReverse(scanner.nextLine());
  10.             System.out.println(Arrays.toString(one) + " + " + Arrays.toString(two) + " = " + Arrays.toString(add(one, two)));
  11.         }
  12.     }
  13.  
  14.     private static int[] toArrayReverse(final String str) {
  15.         final int[] array = new int[str.length()];
  16.         for (int i = 0; i < array.length; i++) {
  17.             array[i] = str.charAt(i) - '0';
  18.         }
  19.         return reverse(array);
  20.     }
  21.  
  22.     private static int[] add(int[] array1, int[] array2) {
  23.         int[] sum = array1.length > array2.length ? array1.clone() : array2.clone();
  24.         final int[] other = array1.length > array2.length ? array2 : array1;
  25.  
  26.         boolean carry = false;
  27.         for (int i = 0; i < sum.length; i++) {
  28.             final int sumValue = (i < sum.length) ? sum[i] : 0;
  29.             final int otherValue = (i < other.length) ? other[i] : 0;
  30.             final int value = sumValue + otherValue + (carry ? 1 : 0);
  31.             sum[i] = value % 10;
  32.             carry = value > 9;
  33.         }
  34.  
  35.         if (carry) {
  36.             final int[] temp = new int[sum.length + 1];
  37.             temp[0] = 1;
  38.             System.arraycopy(sum, 0, temp, 1, sum.length);
  39.             sum = temp;
  40.         }
  41.         return reverse(sum);
  42.     }
  43.  
  44.     private static int[] reverse(final int[] array) {
  45.         for(int i = 0; i < array.length / 2; i++) {
  46.             final int temp = array[i];
  47.             array[i] = array[array.length - i - 1];
  48.             array[array.length - i - 1] = temp;
  49.         }
  50.         return array;
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement