wie berechne ich das Produkt eines Arrays?

... komplette Frage anzeigen

4 Antworten

Ohne mir jetzt den ganzen Code anzuschauen, kann ich gleich sagen, dass du einen Array, den du noch nicht gesetzt hast aufrufen willst, dass heißt dass du z.B. Array[0] = wert; Array[1] = wert; hast aber Array[2] aufrufen willst, dass der da den Wert aber nicht kennt. 

Such den Code nach diesen einfachem Fehler ab und tada :D

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PolinGirl
22.11.2015, 21:48

Ich hab kein Fehler ich möchte einfach nur das Produkt der Zahlen im Array haben ... Aber die Zahlen werden erst von einem Außenstehenden eingegeben somit auch erst dann die größe des Arrays angegeben

0

Wir helfen gerne, aber per Debugging hättest du locker selber drauf kommen können. - Zum einen hättest du bitte vollständig deinen Lösungsversuch posten sollen. Zwar stimmt der restliche Code, aber den Fehler hast du einfach weg gelassen.

du hast es sicherlich so versucht (ärgerlich überhaupt, dass man erst erraten muss, was du meinst):

int produkt = Array[0];

for (i = 0; i < Array.length; i++) {
    produkt *= Array[i+1];
}

Das wäre wohl der 'Klassiker'. 
Eine ArrayIndexOutofBoundsException tritt dann auf, wenn du auf einen Index zurück greifen willst, den es noch nicht gibt. - Das passiert häufig, da der Index bei 0 anfängt zu zählen.  und wie in dem Beispiel hier, mit i+1 der letzte Eintrag immer außerhalb des Gültigen Indizes enden wird:
Bei einer Array die 2 Lang ist, gibt es die indizes: 0 und 1. mit diesem Schleifendurchlauf würdest du aber beim durchlaufen 1 und 2 abfragen wollen.
Lösung: setze im Schleifenkopf int auf 1, und mach kein +1 beim Abfragen der Array. - dann klappt das nämlich auch.

Noch ein paar kleine Anmerkungen:

  1. Variablen sollten klein geschrieben werden, das sorgt für einen übersichtlichen Code.  (Mein damaliger Lehrer hätte mir dafür einen 6er gegeben)
  2. Variablen solltest du so deklarieren, dass sie nur im Verwendungsbereich verfügbar sind. z.B. deine int i Variable: Deklariere sie im Schleifenkopf, da du sie außerhalb nie brauchst und auch nicht verwendet hast, d.h.:for (int i = 0; i < Array.length; i++) {}
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PolinGirl
23.11.2015, 21:17

Ja sorry ich war gestern richtig platt und hab nicht über die richtige Form nachgedacht 

Aufjedenfall habe ich jetzt for (int i=1 ; i <array.lenght; i++) 

Produkt *= array [i] ; 

Kommt immee noch 0 raus

0

Hmm, aus der Frage wird dein Problem irgendwie nicht ganz ersichtlich. Das einzige was ich dir so sicher sagen kann, produkt "darf" auf jeden Fall nicht auf Null gesetzt werden. Eine Zahl mal 0 ergibt immer 0, also wäre das wenig sinnvoll. Das neutrale Element bei der Multiplikation/Division ist 1, entsprechend Produkt auf 1 setzen. Und dann wäre noch ganz interessant zu sehen, wie dein Code für die Berechnung des Produkts aussieht, der Rest passt schließlich. Außerdem die Bitte, dass du mal deinen Programmierstil überdenkst. Sowas liest sich nicht sehr angenehm und zum Korrigieren ist es noch aufwendiger.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PolinGirl
23.11.2015, 21:15

For (int i=1 ; i <array.lenght; i++) 

Produkt*=array [i]; 

0

eine fehlermeldung ohne fehler? - das muss man erst mal hinkriegen.

wenn du uns doch nochmal deinen neuen code - mit der produktberechnung - und zur verfügung stellen könntest?

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?