Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Hi there, I need help with a method called multiplyTwoBigNums() that passes two

ID: 3543990 • Letter: H

Question

Hi there, I need help with a method called multiplyTwoBigNums() that passes two valiues of type ArrayList<Integer> in its parameter. The method should return an ArrayList with the multiplied number stored in it. This is what I got so far:


//I already have a method that checks for the bigger number so just assume that bigger (in the parameter) is the bigger number.


//Note: The numbers passed on bigger and smaller (parameter) are being passed backwards for a better handeling of the operation. For example: 1990, its passed as 0991.


public ArrayList<Integer> multiplyTwoBigNums(ArrayList<Integer> bigger, ArrayList<Integer> smaller){


ArrayList<Integer> multipliedNumber = new ArrayList<Integer>();


int lengthOfBigger = bigger.size();

int lengthOfSmaller = smaller.size();

int difference = lengthOfBigger - lengthOfSmaller;


int zeroAtFrontOfSmallNumber = 0;

if(difference >0 ){

while(zeroAtFrontOfSmallNumber < difference){

smaller.add(smaller.size(), 0);

zeroAtFrontOfSmallNumber++;


}

}


int toBeCarried =0;


Iterator itrNumber1 = bigger.iterator();


for(int i = 0; i<=smaller.size()-1; i--){

while(itrNumber1.hasNext()){


int number1 = ((Integer)itrNumber1.next()).intValue();

int number2 = smaller.get(i);

int multi = (number1 * number2) + toBeCarried;



if(multi > 9){

int remaining = multi % 10;

multipliedNumber.add(remaining);

toBeCarried = multi/10;


}

else{

multipliedNumber.add(multi);

toBeCarried = 0;


}


}



}


if(toBeCarried!=0){

multipliedNumber.add(toBeCarried);


}


return multipliedNumber;








}



so far this only returns the multiplication of the index zero of smaller times the whole bigger number.

for example:

say that the bigger number is: 1998782348 and the smaller number is: 1993

it would only multiply the index of smaller numer: 3, times the whole big number.


Of course, once it gets to multiply each index of the smaller number times the whole big number, I need help to add them up to get a final product.


I need this method done, so please help!


thanks!


Explanation / Answer

Here is modified function giving correct result after adding the each row of results correctly. It is fully tested. Let me know if you face any issues:

public ArrayList<Integer> multiplyTwoBigNums(ArrayList<Integer> bigger, ArrayList<Integer> smaller)

{

ArrayList<Integer> resultNumber = new ArrayList<Integer>();


int toBeCarried = 0;


for(int i = 0; i < smaller.size(); i++)

{

ArrayList<Integer> newNumber = new ArrayList<Integer>();

Iterator<Integer> itrBigNumber = bigger.iterator();

while(itrBigNumber.hasNext())

{

int number1 = itrBigNumber.next();

int number2 = smaller.get(i);

int multi = (number1 * number2) + toBeCarried;


if(multi > 9)

{

int remaining = multi % 10;

newNumber.add(remaining);

toBeCarried = multi / 10;

}

else

{

newNumber.add(0, multi);

toBeCarried = 0;

}

}


if(toBeCarried != 0)

{

newNumber.add(0, toBeCarried);

}


// Insert appropriate zeros at end of new row

for(int j = 0; j < i; j++)

newNumber.add(0);


// Insert appropriate zeros at beginning of old row

int oldResultLength = resultNumber.size();

int newNumberLength = newNumber.size();


int difference = newNumberLength - oldResultLength;


for(int j = 0; j < difference; j++)

resultNumber.add(0, 0);


// Update the resultNumber

toBeCarried = 0;

for(int j = resultNumber.size() - 1; j >= 0; j--)

{

int sum = toBeCarried + resultNumber.get(j) + newNumber.get(j);


resultNumber.set(j, sum % 10);


if(sum > 9)

{

toBeCarried = sum / 10;

}

else

{

toBeCarried = 0;

}


}

if(toBeCarried > 0)

{

resultNumber.add(0, toBeCarried);

}

}


return resultNumber;

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote