Frage von PolinGirl, 36

wie berechne ich das Produkt eines Arrays?

Ich habe echt alle jetzt hinbekommen aber jetzt fehlt mir das Produkt ich wollte das so machen

int produkt = 0;

produkt *= Array[i]; system.out... (produkt);

aaaaaaber da kommt immer ein Fehler in der console undzwar :** Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 at Array.main(Array.java:36) 0**

hier erstmal mein Code import java.util.Scanner;

public class Array {

public static void main(String[] args)
{
    // TODO Auto-generated method stub
    {
        Scanner input=new Scanner(System.in);
        int summe=0;
       

        System.out.print("Wie groß soll das Array sein?");
        int Arraygroeße=input.nextInt();

        int Array[]=new int[Arraygroeße]; // erstellt ein Array mit der
                                          // Größe
                                          // die man eingibt

        int i;
        for (i=0; i<Array.length; i++)
        {
            System.out.print("Feldwert an Stelle "+i+" eingeben: ");
            Array[i]=input.nextInt(); // soll den Wert einlesen den der
                                      // Nutzer
                                      // haben möchte bis das ganze Array
                                      // ausgefüllt ist
        }

        for (i=0; i<Array.length; i++)



            summe+=Array[i];
        System.out.println("Die Summe ist :"+summe);

        int max=Array[0];
        for (i=0; i<Array.length; i++)
            if (max<Array[i])
                max=Array[i];

        System.out.println("Größter Wert des Arrays ist "+max);

        int min=Array[0];
        for (i=0; i<Array.length; i++)
            if (min>Array[i])
                min=Array[i];

        System.out.println("Kleiner Wert des Array ist "+min);

        double mittel=0; // Mittelwert auf 0 setzen
        mittel=summe/Array.length; // Mittelwert berechnen durch Summe
                                   // geteielt durch die Anzahl der Zahlen
                                   // im Array
        System.out.println("Der Mittelwert beträgt:  "+mittel);
        
       
        input.close();

    }
}

}

kann mir jemand bitte helfen wie ich das Produkt berechnen kann ? ( Java)

Expertenantwort
von KnusperPudding, Community-Experte für Java, 22

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++) {}
Kommentar von PolinGirl ,

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

Kommentar von KnusperPudding ,

ich hoffe dass dein Initial-Wert von Produkt nicht 0 ist, du weißt ja was passiert, wenn du einen beliebigen wert mit 0 multiplizierst.

Kommentar von PolinGirl ,

nein habs auf 1 gesetzt 

Kommentar von PolinGirl ,

Ich habe meinen Fehler gefunden ... Danke schön

Kommentar von KnusperPudding ,

Alles klar. Der Vollständigkeitshalber solltest du deine Lösung dennoch als Antwort bereit stellen, sofern andere interessierte deine Frage entdecken auch die Richtige Lösung finden.

Antwort
von DanielPl, 23

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.

Kommentar von PolinGirl ,

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

Produkt*=array [i]; 

Kommentar von DanielPl ,

Wieso i = 1? In dem restlichen Code hast du es ja gleich 0 gesetzt und das ist auch gut so, da du das erste Element eines Arrays mit array[0] ansprichst, mit array[1] sprichst du schon das zweite an. Aber weshalb du da eine Out of Bounds Exception bekommst, kann ich mir nicht erklären. Oder ist das hier gar nicht mehr der Fall?

Kommentar von DanielPl ,

Wenn ich es so programmiere, also

produkt = 1;

for(i=0; i<array.length; i++) {

produkt*=a[i];

}

System.out.println(produkt);

Dann passt alles und er meckert nicht.

Antwort
von Husi012, 36

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

Kommentar von PolinGirl ,

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

Kommentar von martin7812 ,

Die Fehlermeldung besagt, dass der Fehler in Zeile 36 ist.

Ohne dass du den fehlerhaften Programmcode postest und markierst, welche Zeile die Zeile 36 ist, kann man nur raten, was denn der Fehler sein könnte.

Eines ist sicher: Die Variable "i" hat den Wert 2, obwohl das Array nur eine Länge von 2 hat (und somit nur die Elemente Array[0] und Array[1] existieren).

Da "i" den Wert 2 hat und Array[2] nicht existiert, bekommst du bei "Array[i]" eine Fehlermeldung.

Wieso es dazu kommt, dass "i" den Wert 2 hat, kann dir niemand sagen, ohne das komplette fehlerhafte Programm zu sehen.

Antwort
von maximilianus7, 16

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?

Keine passende Antwort gefunden?

Fragen Sie die Community