2017-05-07 3 views
-2

Ich hatte eine erste String-Array (FileContent), die ich in ArrayList (MatchingContent) umgewandelt habe.Berechnen Summe jedes 3. Element - Array Java

Zeichenfolge FileContent = "2017-04-03, 11:25, 2; 2017-04-02, 11:30, 8; 2017-04-03, 14:42, 9";

Jetzt muss ich durch jedes dritte Element zu durchlaufen und die Summe von ihnen zu berechnen, aber unter Abschnitt funktioniert nicht:

Integer[] intarray=new Integer[MatchingContent.length]; 

    for (int i=0; i<MatchingContent.length; i+=3) 
    { 
     int sum = 0; 

     intarray [i] = Integer.parseInt(MatchingContent[i]); 

     sum = sum + intarray[i]; 

    } 
+1

Willkommen bei Stack-Überlauf! Fragen, die Debugging-Hilfe suchen ("Warum funktioniert dieser Code nicht?") Müssen das gewünschte Verhalten, ein bestimmtes Problem oder einen Fehler und den kürzesten Code enthalten, der zur Reproduktion in der Frage erforderlich ist. Fragen ohne eine klare Problemstellung sind für andere Leser nicht nützlich. Siehe: [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels] (http://stackoverflow.com/help/mcve). –

+0

Danke, aber diese Deklaration funktioniert auch nicht: Integer [] intarray = new Ganzzahl [MatchingContent.length]; – Savantes

+1

Woher wissen Sie, dass es nicht funktioniert? – shmosel

Antwort

1

Sie deklarieren (und Initialisierung) die sum innerhalb der Schleife, was bedeutet, würde es Initialisieren Sie in jeder Iteration und überschreiben Sie den vorherigen Wert. Was wir tun müssen, ist, die Deklaration zu ändern und außerhalb der Schleife zu machen, damit der vorherige Wert erhalten bleibt.

Außerdem benötigen Sie nicht Integer[] intarray, da wir das Ergebnis in sum speichern und daher müssen nicht einzelne Elemente separat gespeichert werden. Im Folgenden sind die Beispiele:

int sum = 0; 
for (int i=0; i<MatchingContent.length; i++){ 
    if(i % 3 == 0) { 
     sum += Integer.parseInt(MatchingContent[i]); 
    } 
} 

Oder

int sum = 0; 
for (int i=0; i<MatchingContent.length; i+=3){ 
    sum += Integer.parseInt(MatchingContent[i]); 
} 
+0

Danke, aber diese Deklaration funktioniert auch nicht: Integer [] intarray = new Integer [MatchingContent.length]; – Savantes

+0

@Savantes Sie brauchen diese Erklärung nicht mehr. Wenn Sie meine Antwort sehen, habe ich dieses Bit entfernt, da es sowieso überflüssig war. –

+0

@DarshanMehta, stimmen Sie nicht zu, dass dem Fragesteller viel besser geholfen würde, wenn Sie erklären würden, was in seinem Code falsch war, als vom Code funktioniert? –