概要
目標
あるデータが与えられますので,そのデータを分析し,結果を出力するプログラムを作成します. いくつかのステップが与えられるので,各ステップで指定された分析を行ってください.
参考資料
- クラス定義の基本形
- 参照の一致性
- 値の一致性
- コマンドライン引数
- 文字列から
Integer
型への変換 - 文字列から
Double
型への変換 - 配列と
List
- ユーザ定義型
- 例外機構
- ファイルを扱う型
- 典型的なファイルからのデータの読み込み方法
- 典型的なファイルへのデータの書き込み方法
Map
(連想配列)- 文字列を特定の文字で区切る(
split
)
課題の進め方
この課題は大きく6つのステップに分けられます.
それぞれのステップで ScoreAnalyzer1.java
〜ScoreAnalyzer6.java
を作成します.
以下のことを念頭に課題を進めてください.
- ステップ1からステップ2, ステップ3と順番に課題を進めてください. 途中のステップのスキップはできません.
- ステップ1で作成した内容を元に, ステップ2を作成してください.
- ステップ3以降も同様に,前のステップで作成した内容を全て含めて当該ステップに取り組んでください.
- プログラムを作成するとき,一つ前のステップのプログラムをコピーして始めると良いでしょう.
- ただし,
main
メソッドの内容を修正することを忘れないようにしましょう. main
メソッドで異なる型をnew
するバグはなかなか気付きません.
- ただし,
- ステップ3までが必須で,ステップ4, ステップ5, ステップ6がチャレンジ問題です.
課題の提出方法
この課題は6つのステップに分けられています.
各ステップでScoreAnalyzer1.java
〜ScoreAnalyzer6.java
を作成します.
具体的に指示はしていませんが,独自の型を作成する必要もあるでしょう.
それら全てのソースファイルを zip 圧縮し,zipファイルを Moodle に提出してください.
- 学生証番号(6桁)のディレクトリを作成し,そこに全てのソースファイルをいれてください.
- 自分の学生証番号が 123456 の場合,展開すると次のようになっているようにしてください.
$ ls
123456.zip
$ unzip 123456.zip
$ ls
123456.zip 123456
$ tree 123456
123456
... # 必要なファイル
├── ScoreAnalyzer1.java
├── ScoreAnalyzer2.java
... # 必要なファイル
└── ScoreAnalyzer6.java
- 提出期限は 2020年8月17日(月)9:00です.
- 提出先は Moodle の【〆切 2020/8/17(月) 9:00】最終課題 です.
- 次のチェックリストを提出前に確認してください.
- zipファイルを空のディレクトリに展開したとき,上記のような構造になっているか.
- その状態でコンパイルに成功するか.
- 全てのソースファイルにコメントとして,自分の学生証番号,名前が記載されているか.
課題のデータ
課題には次のデータを利用してください. なお,評価には,このページからダウンロードできるデータとは異なるものを利用します. データの形式は同じですが,記載されているデータやデータ量は異なります. しっかりとデータを読み,適切な分析を行うようにして下さい. なお,多少の計算誤差は許容されます. また,与えられるデータはソートされているとは限りません.
- この課題で利用するデータです
- これらのデータはとある講義の小テストの結果を示したものです.
- ランダムに並び替えた上でIDを付け直していますので,個人を特定できないようにしています.
評価項目
以下の点を満たしていれば,加点されます. また,それぞれのステップで確認事項があります.それぞれを満たすことで加点されていきます.
- インデントがずれている部分がないこと.
- 少しでもインデントがずれているとNG.
- ループ制御変数以外で1文字の変数名を利用していないこと.
- 1つのメソッドが30行以内であること.
- メソッド開始の
{
と終了の}
は含まない.
- メソッド開始の
- 3つ以上のネストが存在しないこと.
- 2重ループ内の条件分岐はアウト.別のメソッドに切り出しましょう.
- フィールド,ローカル変数の数がそれぞれ5つ以下であること.
- ローカル変数の数は,ここでは,メソッド内に定義されている全ての変数の数とします.
- ただし,メソッドの引数は含みません.
- 配列を使っていないこと.ただし,以下の部分は除きます.
main
メソッドの引数,及びその変数を他のメソッドに渡した時の引数,split
メソッドの返り値.
- クラス定義の基本形に従ってプログラムを書いていること.