[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);
}
}
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);
}
}
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);
}
}
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);
}
}
Author And Source
この問題について([Java:forループを使った配列]forループが終わった時に、変数に配列の値が適用される。), 我々は、より多くの情報をここで見つけました https://qiita.com/kokonoe/items/b5f7e7e4ff6717ffa107著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .