2015-03-10 3 views
0

Мне трудно понять, как добавить два целых массива в Java (чтобы они действовали как два отдельных номера). Поэтому, если один из моих массивов [1, 1, 2], а другой [2, 9, 8], программа вернет [4, 1, 0]. Или, если мой первый массив равен [9, 8], а мой второй - [2, 2], он вернет [1, 2, 0].Добавление двух массивов ints

У меня есть код запуска, основной проблемой является то, что он не может добавлять массивы разных размеров (индекс j переходит в негативы, генерируя исключение индекса за пределами границ). Я понятия не имею, как это исправить, не испортив код.

int j = h.size - 1; 
int carry = 0; 
int k = temp3.length - 1; 


for (int i = this.size - 1; i >= 0; i--){ 
    int sum = 0; 
    sum = temp1[i] + temp2[j] + carry; 
    j--; 

    if (sum > 9){ 
     carry = 1; 
    } 
    else 
     carry = 0; 
    int lastDigit = sum%10; 
    temp3[k] = lastDigit; 
    k--; 
} 
temp3[k] = carry; 
+0

Если вы расширить свой код немного, чтобы включить полный метод, или, по крайней мере, заявления ' temp3', 'h',' temp1' и 'temp2' Я обещаю вам хороший ответ. – aioobe

ответ

2

Если вы хотите сделать это с помощью массивов (или любым другим способом, действительно) Вы должны были бы площадку перед одним из чисел с 0, так что они имеют одинаковую длину. Таким образом, с массивами вам нужно будет создать третий массив со всеми 0, а затем изменить с конца с номерами меньшего массива и использовать его для сравнения с большим массивом.

1

Преобразование массивов целых чисел (или BigIntegers):

static BigInteger asBigInt(int[] arr) { 
    BigInteger n = BigInteger.ZERO; 
    for (int i : arr) 
     n = n.multiply(BigInteger.TEN).add(BigInteger.valueOf(i)); 
    return n; 
} 

И использовать дополнение:

System.out.println(asBigInt(arr1).add(asBigInt(arr2))); // 410 
Смежные вопросы