課題0301
コンソールに三角形の3辺a,b,cの長さをそれぞれ入力させ、その三角形の面積を表示するプログラム Heron.java をパッケージ j1.lesson03 に作成しなさい。
コンソールへの入力要求は次のように表示する。
- 辺aの長さ
- この直後に辺aの長さを入力させる
辺aの長さを入力:
- 辺bの長さ
- この直後に辺bの長さを入力させる
辺bの長さを入力:
- 辺cの長さ
- この直後に辺cの長さを入力させる
辺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
手順
指定した箇所で必ずテストを行うこと。
- パッケージ j1.lesson03 にクラス Heron を作成 (ファイル名は Heron.javaとなる)
- クラス Heron 内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
- 必ず throws IOException の記述を付加しておくこと (つまり、import java.io.*;も必要となる)
- テスト項目「Heron に対する骨格テスト」をパス
- mainメソッド内に課題の内容を実装
- テスト項目「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つ目の入力
- この直後に1つ目の整数を入力させる
整数を入力(1):
- 2つ目の入力
- この直後に2つ目の整数を入力させる
整数を入力(2):
- 3つ目の入力
- この直後に3つ目の整数を入力させる
整数を入力(3):
結果の表示方法は次の通りとする。
最大の値は x
ただし、xの部分には コンソールに入力された3つの数の最大値を表示すること。
結果の例
仮に、それぞれ0,-25,30を指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。
整数を入力(1):0 整数を入力(2):-25 整数を入力(3):30 最大の値は30
手順
- パッケージ j1.lesson03 にクラス Max3 を作成 (ファイル名は Max3.javaとなる)
- クラス Max3 内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
- テスト項目「Max3 に対する骨格テスト」をパス
- mainメソッド内に課題の内容を実装
- テスト項目「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 以上 20 未満
傘は要りません。
- 降水確率が 20 以上 50 未満
雨が降るかもしれません。 傘を持って行ったほうが良いでしょう。
- 降水確率が 50 以上 100 以下
傘を持って行ったほうが良いでしょう。
- 降水確率に0以上100以下の数値が指定されなかった場合
降水確率は0から100の間で指定してください。
結果の例
仮に、入力に30を指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。
降水確率を入力してください:30 雨が降るかもしれません。 傘を持って行ったほうが良いでしょう。
手順
- パッケージ j1.lesson03 にクラス ChanceOfRain を作成 (ファイル名は ChanceOfRain.javaとなる)
- クラス ChanceOfRain 内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
- テスト項目「ChanceOfRain に対する骨格テスト」をパス
- mainメソッド内に課題の内容を実装
- テスト項目「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 |