ホームへ
情報処理技法(Javaプログラミング)1のトップページへ

情報処理技法(Javaプログラミング)1練習問題解答

問題(その1)

5人の生徒の英語の平均点を求めるプログラム(for文, ArrayList)

解答(その1)

まず、ArrayListを使うには、プログラムの冒頭に

import java.util.ArrayList;

の1文を加えます。また、ArrayListの変数宣言と初期化は、ArrayListの変数名と登録する値のデータ型を決めておいて、

ArrayList>Integer< englishScoreList = new ArrayList>Integer<();

のように書きます。「Integer」は登録する値のデータ型(int型の値を登録する場合、ArrayListでの宣言は「Integer」と書きます)、「englishScoreList」は、値を登録するArrayListの変数名で、今回は、英語の得点を登録するための変数です。

そして、ArrayListへの具体的な値の登録は

englishScoreList.add(値);

のように書きます。

ArrayListでの点数の合計を計算するには、合計を表すint型の変数を1つ用意し(sumとします)、ArrayListの中に入っている値を1つ1つ取り出して、それを加えていきます。このとき、変数sumには、for文の前で、0を代入しておきます。これは、0は足しても、最終的な結果に影響しないからです。

ArrayListでは、ArrayList向けのfor文を使った場合、ArrayListから取り出された1つ1つの値は、そのfor文内で宣言された変数に代入されています。従って、そのfor文内で宣言された変数をscoreとすると、

sum = sum + score;

で、合計を計算していくことになります。これにより、for文の処理は以下のようになります。

  1. 0 + (englishScoreListのインデックス0の値)をする
  2. 1. の結果に(englishScoreListのインデックス1の値)を加える
  3. 2. の結果に(englishScoreListのインデックス2の値)を加える
  4. 3. の結果に(englishScoreListのインデックス3の値)を加える
  5. 4. の結果に(englishScoreListのインデックス4の値)を加える

解答プログラム(AverageArrayList.java)

問題(その2)

  1. 月曜日から日曜日までに、0から6までの番号をつけて、曜日の名前を配列に代入する
  2. 標準入力から数を1つ入力し、その数を7で割った余りを求める
  3. その余りに対応する曜日を標準出力に出力する

解答(その2)

1. でつけた番号は、そのまま、それぞれの曜日に対応するArrayListのインデックスになります。そして、正の整数を7で割った余りは、必ず0~6の数になります。つまり、3. で求める曜日は、そのArrayListのインデックスが、2. で求めた余りに等しいものとなります。従って、2. で求めた余りをそのままArranListのインデックスとすることで、if文を使うことなく、結果を求めることができます。

解答プログラム(Week.java)


Copyright (C) Junko Shirogane, Tokyo Woman's Christian University 2015, All rights reserved.