Implementacja mnożenia liczb zapisanych w łańcuchach.

0

Witam, celem jest pomnożenie dwóch liczb całkowitych o nieskończonej wielkości (przechowywane w stringach)
Metoda : "Pod kreską"

Mam coś takiego:

public void generateMultipleStages() {

		LinkedList<String> stages = new LinkedList<String>();
		LinkedList<Integer> help = new LinkedList<Integer>();

		int sizeM1 = this.M1.length()-1;
		int sizeM2 = this.M2.length()-1;
		
		for (int i=sizeM1; i>=0; i--) {

			int temp10 = 0;

			for (int j=sizeM2; j>=0; i--) {

				int temps2 = Integer.valueOf(this.M2.charAt(i));
				int temps1 = Integer.valueOf(this.M1.charAt(j));

				int temp = Character.getNumericValue(temps1)
						* Character.getNumericValue(temps2);

				int temp1;

				if (temp > 9) {

					temp1 = temp % 10;
					help.add(temp1 + temp10);
					
				if (temp > 9 && j == 0) {
					
					help.add((temp - (temp%10)) / 10);
				}
				
				} else {

					temp1 = temp;
					help.add(temp1);
				}

				temp10 = (temp - temp1) / 10;
			}
			
			String ressult = "";
			while (help.isEmpty() == false) {
				
				ressult = ressult + help.getLast().toString();
				help.removeLast();
			}
			
			stages.add(ressult);
		}
		
		for(int i=0; i<3; i++) {
			System.out.println(stages.get(i));
		}
	}

Podzieliłem operację na 2 metody : jedna ma przygotować listę stringów powstałych poprzez wymnożenie każdej z cyfr liczby mnożonej przez każdą z mnożącej. Czyli jak mamy M1 * M2, to po zakończeniu pracy metody generateMultipleStages mamy mieć listę z M2 stringami. Następnie druga metoda ma je dodać do siebie, pamiętając, że każdy kolejny ma być przesunięty o jeden w lewo. Druga część będzie już prostsza, natomiast problem mam z częścią pierwszą.

Gdzieś mi się zdarzył błąd logiczny i teraz nie mogę go wykryć. Mianowicie

1) Nie zawsze dobrze bierze pod uwagę przesunięcie, tzn raz bierze, raz nie bierze.
2) Wykonuje się tylko pętla wewnętrzna i do listy stages dodaje zerowy string, a dalej coś jakby się blokuje...

Proszę o pomoc w usprawnieniu powyższego kodu.

0

podbijam

1 użytkowników online, w tym zalogowanych: 0, gości: 1