[Java:forループを使った配列]forループが終わった時に、変数に配列の値が適用される。


forループによるスコア集計のコードサンプル

public class Main {
	public static void main(String[] args) {
	  int[] scores = {40, 50, 70, 80, 30};
	  int sum = 0;
	for (int i = 0; i < scores.length; i++) {
		sum += scores[i];
	}
	  int avg = sum / scores.length;
	System.out.println("合計" + sum);
	System.out.println("平均" + avg);
	}
}

表示結果は
合計270
平均54
になります。

変数sumに配列の値が入るタイミング

forを使用した場合、変数sumに配列scoresの値が適応されるタイミングはforループが終了したときです。

なので、平均点の計算は、forループが終了した後に記述しなければ、エラーにはなりませんが誤った結果表示されてしまいます。

誤りのコード

平均計算の式をforループが終わる前(変数sumに配列scoresの値が適応される前)に書いているので、結果が 合計270 平均0 になってしまいます。
public class Zyouken {
	public static void main(String[] args) {
	  int[] scores = {40, 50, 70, 80, 30};
	  int sum = 0;
//ここで、forループが終了する前に平均点計算をしてしまっている。
	  int avg = sum / scores.length;
	for (int i = 0; i < scores.length; i++) {
		sum += scores[i];
	}
	System.out.println(sum);
	System.out.println(avg);
	}
}

[追記]別解

拡張for文を適用した場合
public class Main {
	public static void main(String[] args) {
	  int[] scores = {40, 50, 70, 80, 30};
	  int sum = 0;
	for(int value:scores) {
		sum += value;
	}
	  int avg = sum / scores.length;
    System.out.println(sum);
    System.out.println(avg);
	}
}