Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Arrays;
- import java.util.Scanner;
- final class Add {
- public static void main(final String[] args) {
- try (final Scanner scanner = new Scanner(System.in)) {
- final int[] one = toArrayReverse(scanner.nextLine());
- final int[] two = toArrayReverse(scanner.nextLine());
- System.out.println(Arrays.toString(one) + " + " + Arrays.toString(two) + " = " + Arrays.toString(add(one, two)));
- }
- }
- private static int[] toArrayReverse(final String str) {
- final int[] array = new int[str.length()];
- for (int i = 0; i < array.length; i++) {
- array[i] = str.charAt(i) - '0';
- }
- return reverse(array);
- }
- private static int[] add(int[] array1, int[] array2) {
- int[] sum = array1.length > array2.length ? array1.clone() : array2.clone();
- final int[] other = array1.length > array2.length ? array2 : array1;
- boolean carry = false;
- for (int i = 0; i < sum.length; i++) {
- final int sumValue = (i < sum.length) ? sum[i] : 0;
- final int otherValue = (i < other.length) ? other[i] : 0;
- final int value = sumValue + otherValue + (carry ? 1 : 0);
- sum[i] = value % 10;
- carry = value > 9;
- }
- if (carry) {
- final int[] temp = new int[sum.length + 1];
- temp[0] = 1;
- System.arraycopy(sum, 0, temp, 1, sum.length);
- sum = temp;
- }
- return reverse(sum);
- }
- private static int[] reverse(final int[] array) {
- for(int i = 0; i < array.length / 2; i++) {
- final int temp = array[i];
- array[i] = array[array.length - i - 1];
- array[array.length - i - 1] = temp;
- }
- return array;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement