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);
}
}
↧