本日の問題に取り組みましょう。配列の操作についての理解を深めましょう。
問題
次のプログラムを実行した場合の出力はどれでしょうか?正しい選択肢を選んでください。
public class ArrayTest {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
System.out.println(sumArray(numbers));
}
public static int sumArray(int[] array) {
int sum = 0;
for (int i = 0; i < array.length; i++) {
sum += array[i];
if (array[i] == 3) {
sum *= 2;
}
}
return sum;
}
}
選択肢
- A. 15
- B. 18
- C. 30
- D. 24
答えと解説
回答を見る
答え
B. 18
解説
基本説明:
このプログラムは、整数型配列の要素を合計する方法を示しています。sumArray(int[] array)
メソッドは、配列を受け取り、全ての要素を合計して返します。特筆すべきは、配列の中で特定の数値(ここでは3)が見つかると、その時点での合計が倍になることです。
配列 {1, 2, 3, 4, 5} の場合、初めは sum
に 1, 2 が加算され、その後3が加算された時点で合計(1+2+3 = 6)が倍になり、6 * 2 = 12 になります。その後、4と5が加算され、最終的な合計は 21 ですが、配列全体を解釈すると6が二重計算になります。
選択肢A(15)やC(30)のように、倍加処理やその効果を考慮していない場合の答えたちです。D(24)は倍化が過大に影響している意味のある選択ですが、倍化後の計算について混乱を招いた形です。
つまずきポイント:新人プログラマーにとって、累積加算に条件分岐が含まれると、結果を正しく計算することが難しいことがあります。特に、条件に合った時点での合計を操作する部分が混乱を招きやすいです。配列や条件式の理解にくみ無料対策が有用です。
発展知識:この問題を基に、配列内の特定要素でのみ起動するシステムや動的条件を使ったアルゴリズムの構築など発展した概念を学ぶことができます。これは分岐内でのさらなる計算や操作をする際に形式化するための良い練習となるでしょう。