第03週目課題

課題0301

コンソールに三角形の3辺a,b,cの長さをそれぞれ入力させ、その三角形の面積を表示するプログラム Heron.java をパッケージ j1.lesson03 に作成しなさい。

コンソールへの入力要求は次のように表示する。

辺aの長さを入力:
辺bの長さを入力:
辺cの長さを入力:

必ず、辺a,b,cの順に入力させ、それぞれの辺の長さは実数を指定できること。今回は辺a,b,cから三角形を作れない場合は考慮しなくても良い (そのようなテストは行わない)。

結果の表示方法は次の通りとする。

三角形の面積は x

ただし、xの部分には入力された3辺を持つ三角形をプログラム上で計算した結果を表示すること。

結果の例

仮に、辺a,b,cにそれぞれ5.0,6.0,7.0を指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。

辺aの長さを入力:5.0
辺bの長さを入力:6.0
辺cの長さを入力:7.0
三角形の面積は14.696938456699069

手順

指定した箇所で必ずテストを行うこと。

  1. パッケージ j1.lesson03 にクラス Heron を作成 (ファイル名は Heron.javaとなる)
  2. クラス Heron 内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
  3. テスト項目「Heron に対する骨格テスト」をパス
  4. mainメソッド内に課題の内容を実装
  5. テスト項目「Heron に対する機能テスト」をパス

ヒント

第02週の課題を参照。

テストの失敗メッセージ

骨格テスト

メッセージ 詳細
クラスが存在しません j1.lesson03 に Heron クラスが存在していない。パッケージやクラス名を確認
クラスがpublicで宣言されていません class の前に public の指定がない。
mainメソッドが存在しません public static void main(String[]) が存在していない。mainという名前やString[]の部分を確認
mainメソッドがpublicで宣言されていません mainメソッドを作る際に public が抜けている。
mainメソッドがstaticで宣言されていません mainメソッドを作る際に static が抜けている。
mainメソッドがvoidで宣言されていません mainメソッドを作る際に void 以外を指定している。
mainメソッドにthrows IOExceptionの指定がありません mainメソッドを作る際にthrows IOExceptionの指定を行っていない。

機能テスト

メッセージ 詳細
余計な入力を待っていると考えられます コンソール入力を取得する命令を4回以上行っていないか確認
次の入力を変換できませんでした (???) ??? を取得しようとして失敗している。コンソール入力を取得する命令を確認
期待された結果と異なります 出力された結果が期待された値と異なる。「期待された値」と「実際の値」を比較 (エラーメッセージが出力されているエリアの下のほうにあるバーをスクロールさせれば見ることができる) し確認。他にも直接プログラムを実行して結果を調べたり、エラーメッセージの2行目にあるat以下を参考にプログラムを見直す

課題0302

コンソールに3つの整数をそれぞれ入力させ、その最大値を表示するプログラム Max3.java をパッケージ j1.lesson03 に作成しなさい。

コンソールへの入力要求は次のように表示する。

整数を入力(1):
整数を入力(2):
整数を入力(3):

結果の表示方法は次の通りとする。

最大の値は x

ただし、xの部分には コンソールに入力された3つの数の最大値を表示すること。

結果の例

仮に、それぞれ0,-25,30を指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。

整数を入力(1):0
整数を入力(2):-25
整数を入力(3):30
最大の値は30

手順

  1. パッケージ j1.lesson03 にクラス Max3 を作成 (ファイル名は Max3.javaとなる)
  2. クラス Max3 内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
  3. テスト項目「Max3 に対する骨格テスト」をパス
  4. mainメソッド内に課題の内容を実装
  5. テスト項目「Max3 に対する機能テスト」をパス

ヒント

コンソールからの3つの入力を、それぞれa,b,cとする。

まず、aとbを比較して、その大きい方とcとを比較すれば良い (その比較の結果の大きい方が最大である)。

テストの失敗メッセージ

骨格テスト

メッセージ 詳細
クラスが存在しません j1.lesson03 に Max3 クラスが存在していない。パッケージやクラス名を確認
クラスがpublicで宣言されていません class の前に public の指定がない。
mainメソッドが存在しません public static void main(String[]) が存在していない。mainという名前やString[]の部分を確認
mainメソッドがpublicで宣言されていません mainメソッドを作る際に public が抜けている。
mainメソッドがstaticで宣言されていません mainメソッドを作る際に static が抜けている。
mainメソッドがvoidで宣言されていません mainメソッドを作る際に void 以外を指定している。
mainメソッドにthrows IOExceptionの指定がありません mainメソッドを作る際にthrows IOExceptionの指定を行っていない。

機能テスト

メッセージ 詳細
余計な入力を待っていると考えられます コンソール入力を取得する命令を4回以上行っていないか確認
次の入力を変換できませんでした (???) ??? を取得しようとして失敗している。コンソール入力を取得する命令を確認
期待された結果と異なります 出力された結果が期待された値と異なる。「期待された値」と「実際の値」を比較 (エラーメッセージが出力されているエリアの下のほうにあるバーをスクロールさせれば見ることができる) し確認。他にも直接プログラムを実行して結果を調べたり、エラーメッセージの2行目にあるat以下を参考にプログラムを見直す

機能テストのエラーメッセージから見るヒント

メッセージ テストの内容
期待された結果と異なります (00) 入力が順に 最小、中間、最大
期待された結果と異なります (01) 入力が順に 中間、最大、最小
期待された結果と異なります (02) 入力が順に 最大、最小、中間
期待された結果と異なります (03) 入力が順に 最大、中間、最小
期待された結果と異なります (04) 入力が順に 中間、最小、最大
期待された結果と異なります (05) 入力が順に 最小、最大、中間
期待された結果と異なります (06) 入力が全て同じ値

課題0303

コンソールに0以上100以下の降水確率を入力させ、その値によって様々な文字列を表示するプログラム ChanceOfRain.java をパッケージ j1.lesson03 に作成しなさい。

コンソールへの入力要求は次のように表示する。

降水確率を入力してください:

この入力された降水確率によって、結果を以下のように出力する。

傘は要りません。
雨が降るかもしれません。
傘を持って行ったほうが良いでしょう。
傘を持って行ったほうが良いでしょう。
降水確率は0から100の間で指定してください。

結果の例

仮に、入力に30を指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。

降水確率を入力してください:30
雨が降るかもしれません。
傘を持って行ったほうが良いでしょう。

手順

  1. パッケージ j1.lesson03 にクラス ChanceOfRain を作成 (ファイル名は ChanceOfRain.javaとなる)
  2. クラス ChanceOfRain 内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
  3. テスト項目「ChanceOfRain に対する骨格テスト」をパス
  4. mainメソッド内に課題の内容を実装
  5. テスト項目「ChanceOfRain に対する機能テスト」をパス

ヒント

今週の講義資料を参照。

if-elseのchainをする際に、判定する条件を並び替えてやると楽。

テストの失敗メッセージ

骨格テスト

メッセージ 詳細
クラスが存在しません j1.lesson03 に ChanceOfRain クラスが存在していない。パッケージやクラス名を確認
クラスがpublicで宣言されていません class の前に public の指定がない。
mainメソッドが存在しません public static void main(String[]) が存在していない。mainという名前やString[]の部分を確認
mainメソッドがpublicで宣言されていません mainメソッドを作る際に public が抜けている。
mainメソッドがstaticで宣言されていません mainメソッドを作る際に static が抜けている。
mainメソッドがvoidで宣言されていません mainメソッドを作る際に void 以外を指定している。
mainメソッドにthrows IOExceptionの指定がありません mainメソッドを作る際にthrows IOExceptionの指定を行っていない。

機能テスト

メッセージ 詳細
余計な入力を待っていると考えられます コンソール入力を取得する命令を2回以上行っていないか確認
次の入力を変換できませんでした (???) ??? を取得しようとして失敗している。コンソール入力を取得する命令を確認
期待された結果と異なります 出力された結果が期待された値と異なる。「期待された値」と「実際の値」を比較 (エラーメッセージが出力されているエリアの下のほうにあるバーをスクロールさせれば見ることができる) し確認。他にも直接プログラムを実行して結果を調べたり、エラーメッセージの2行目にあるat以下を参考にプログラムを見直す

機能テストのエラーメッセージから見るヒント

メッセージ テストの内容
期待された結果と異なります (M10) 入力が -10
期待された結果と異なります (M1) 入力が -1
期待された結果と異なります (0) 入力が 0
期待された結果と異なります (10) 入力が 10
期待された結果と異なります (19) 入力が 19
期待された結果と異なります (20) 入力が 20
期待された結果と異なります (35) 入力が 35
期待された結果と異なります (49) 入力が 49
期待された結果と異なります (50) 入力が 50
期待された結果と異なります (75) 入力が 75
期待された結果と異なります (100) 入力が 100
期待された結果と異なります (101) 入力が 101
期待された結果と異なります (110) 入力が 110