LinkedList - Berechnung des Produkts

bRainLaG

Mitglied
Ich möchte aus einer verketteteten Liste, das Produkt aller Elemente berechnen. Das durchlaufen, würde ich mit einem Iterator angehen, davon gehe ich schonmal aus, wie ich aber nun das Produkt berechne ist mir nicht ganz geläufig, hoffe ihr könnt mir da weiterhelfen?
 
Du initialisierst die Resultatvariable auf eins und multiplizierst dann das jeweils aktuelle Element mittels *= mit der Resultatvariablen. Am Ende enthält diese gerade das gesuchte Produkt.
 
Genauer ist es mit BigDecimal zu rechnen:

Java:
BigDecimal product = BigDecimal.ONE;
for(double value : elements){
    product.multiply(BigDecimal.valueOf(value));
}

double result = product.doubleValue();
 
Zuletzt bearbeitet:
Hallo,

du musst dir das Berechnungsergebnis jedes mal zwischen Spreichern, da BigDecimals Immutable sind und bigDecimal.multiply immer eine neue BigDecimal Instanz zurück gibt.

Java:
package de.tutorials;

import java.math.BigDecimal;
import static java.util.Arrays.asList;
import java.util.List;

public class ListMultiply {

  public static void main(String[] args) {
    List<BigDecimal> nums = asList(bd(1), bd(2), bd(3), bd(4), bd(5));

    BigDecimal result = BigDecimal.ONE;
    for (BigDecimal num : nums) {
      result =   result.multiply(num);
    }

    System.out.println(result);
  }

  static BigDecimal bd(Number number) {
    return BigDecimal.valueOf(number.doubleValue());
  }
}

Gruß Tom
 
hmmm ich habs jetzt mal auf eigenehm Wege versucht vorher, da es ja primär für double Zahlen gelten soll
Mein Ansatz:

In Ergänzung zu meiner Frage:

Code:
public class LinkedList<T>  implements Iterator<T>, Serializable	{
	
	
	private class Node<T> {
		
		Node<T> next;
		T value;
		
		Node(){
			
		}
		Node(T value, Node<T> next){
			
			this.value = value;
			this.next = next;
		}
	}

Das mal davor da ich irgendwie glaube, das er es ausschließt, das er Strings multiplizieren muss weiß aber nicht wie ich das anpasse.
Code:
void fold (){
		
		Node ptr = head;
		Node next = ptr.next;
		
		double produkt = 1;
		for(;;){
		if (ptr != null) {
		  produkt = produkt * ptr.value;
		  ptr = next;
		}
		else System.out.print(produkt);
		}
	}

ich hab in der Multiplikationszeile noch nen Fehler weiß aber nicht genau warum.


Ach und gute Besserung Zeja :)
 
Zuletzt bearbeitet:
Zurück