2016-10-28 6 views
-1

配列内のすべてのデータを合計します。私はそれがここにある、私のクラスからの配列を含んでいませんでした:配列内のデータを集計する - なぜ私のコードが機能していないのですか?

int treffer [] = {0,0,0,0,0}; 

(配列があるため、別の方法を変更され、完全な方法ここでは(ドイツのコメントをしていますが、メインのアイデアを得る必要があります)

import java.util.stream.*; 
public class Schuetze{ 

    int treffer [] = {0,0,0,0,0}; 
    int sum = 0; 

    public Schuetze(){ 

    } 

    public void schutze1(){ 

    } 

    public void schuetze2(){ 

    } 

    public void trefferEinfuegen(int pTreffer) { 
     // ich gehe davon aus, dass 1-5 für die Felder übergeben wird. 

     // hier wird überprüft, ob der Wert im Array überhaupt existiert. Stichwort "array out of bounds" 
     if(pTreffer < 1 || pTreffer > treffer.length) { 
      return; // methode beenden ohne aktion. "Nichts zurück geben" 
     } 
     pTreffer--; // reduziere Array Index um 1 da ein Array bei 0 anfängt. 
     treffer[pTreffer]++; // erhöhe den Treffer des übergebenen Feldes. 
    } 

    public void datenLiefern() 
    { 
     for (int i : treffer) 
      sum += i; 

     System.out.println("The sum is " + sum); 
    } 

}

マイコードが機能していません。これは、最初に私に正しい番号を表示しますが、その数×2を取る。

public void datenLiefern() 
{ 
    for (int i : treffer) 
     sum += i; 

    System.out.println("The sum is " + sum); 
} 
+0

ここで、合計を0に設定していますか? 'sum'はなぜフィールドでありローカル変数ではないのですか? –

+3

'datenLiefern'を2回呼び出すことは可能でしょうか?とにかく 'sum = 0;' beforeループを追加するだけです。 – talex

答えて

0

はあなたのsum変数をreinitilizeするのを忘れて、それは次のようになります。元のインスタンス変数がsumである理由

public void datenLiefern() { 
    sum = 0; 
    for (int i : treffer) 
     sum += i; 

    System.out.println("The sum is " + sum); 
} 

しかし、私は(私はあなたのクラスのロジック:)のほとんどを理解していない認めなければなりません。 ?)

関連する問題