課題0801
コンソールから実数で摂氏の温度を入力させ、その対応する華氏の温度を表示するプログラム Celsius2Fahrenheit.java をパッケージ j1.lesson08 に作成しなさい。
ただし、「実数で摂氏の温度を引数とし、その対応する華氏の温度を計算する」メソッドとして、名前が cels2fahr で、引数として1つの実数をもつメソッドを定義し、メソッド内部で引数を元に変換計算をして実数の戻り値を返すこと。
摂氏を c とすると華氏への変換式は (9.0 / 5.0) * c + 32.0 で表される。
全体なプログラムの流れは以下のようにすること。
- main メソッド内
- 入力を受け取る
- cels2fahrメソッドを用いて計算を行う
- 計算結果を出力する
- cels2fahr メソッド内
- 変換計算をして、戻り値を返す
まず、mainメソッドで次のように表示しながらコンソールへの入力要求を行う。
- 摂氏の温度
- この直後に摂氏の温度を入力させる
摂氏を入力:
摂氏の温度は実数を指定できること。
cels2fahr(double)メソッド内で摂氏を華氏に変更し、mainメソッドで次のように結果を表示する。
摂氏 c 度は華氏 f 度
ただし、c の部分は入力した摂氏の温度を、f の部分は cels2fahr メソッド内での計算結果を返して出力すること(cels2fahr メソッド内での出力は無効)。
結果の例
仮に、摂氏の温度に36.5を指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。
摂氏を入力:36.5 摂氏36.5度は華氏97.7度
手順
指定した箇所で必ずテストを行うこと。
- パッケージ j1.lesson08 にクラス Celsius2Fahrenheit を作成 (ファイル名は Celsius2Fahrenheit.javaとなる)
- クラス内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
- 必ず throws IOException の記述を付加しておくこと (つまり、import java.io.*;も必要となる)
- クラス内に必要なメソッド (cels2fahr) の骨格を作成 (こちらには throws IOException は必要ない)
- テスト項目「Celsius2Fahrenheit に対する骨格テスト」をパス
- main以外のメソッド内に課題の内容を実装
- mainから各メソッドを呼び出して、メソッドが正しく動作しているか確認
- テスト項目「Celsius2Fahrenheit に対する単体テスト」をパス
- mainメソッド内に課題の内容を実装
- いくつかテストを行って、プログラムが正しく動作しているか確認
- テスト項目「Celsius2Fahrenheit に対する機能テスト」をパス
テストの失敗メッセージ
骨格テスト
メッセージ | 詳細 |
---|---|
(クラス名), existence | パッケージ内に課題で指定したクラスが存在していない。パッケージやクラス名を確認 |
(メソッド名), existence | 指定されたメソッドが存在しない |
(メソッド名), public | メソッドを作る際に public が抜けている |
(メソッド名), static | メソッドを作る際に static が抜けている |
(メソッド名), type <T> | メソッドを作る際に戻り値型の指定が間違えている。正しくは<T>に表示された型 |
(メソッド名), throws ... | メソッドを作る際に throws... の指定がない |
単体テスト
メッセージ | 詳細 |
---|---|
(メソッド名), 期待された結果と異なります | (メソッド名)を起動した結果が期待された結果と異なる。テスト項目を参照 |
単体テストの項目
項目名 | 詳細 |
---|---|
testCels2Fahr_c0 | cels2fahr メソッドを実引数 (0.0) で起動した |
testCels2Fahr_f0 | cels2fahr メソッドを実引数 (-17.777777777777777777) で起動した |
testCels2Fahr_c5 | cels2fahr メソッドを実引数 (5.0) で起動した |
testCels2Fahr_c10 | cels2fahr メソッドを実引数 (10.0) で起動した |
testCels2Fahr_c15 | cels2fahr メソッドを実引数 (15.0) で起動した |
testCels2Fahr_c20 | cels2fahr メソッドを実引数 (20.0) で起動した |
testCels2Fahr_c25 | cels2fahr メソッドを実引数 (25.0) で起動した |
testCels2Fahr_c30 | cels2fahr メソッドを実引数 (30.0) で起動した |
機能テスト
メッセージ | 詳細 |
---|---|
余計な入力を待っていると考えられます | コンソール入力を取得する命令を余計に行っていないか確認 |
次の入力を変換できませんでした (???) | ??? を取得しようとして失敗している。コンソール入力を取得する命令を確認 |
期待された結果と異なります | 出力された結果が期待された値と異なる。「期待された値」と「実際の値」を比較 (エラーメッセージが出力されているエリアの下のほうにあるバーをスクロールさせれば見ることができる) し確認。他にも直接プログラムを実行して結果を調べたり、エラーメッセージの2行目にあるat以下を参考にプログラムを見直す |
機能テストの項目
項目名 | 詳細 |
---|---|
testc0 | 入力が 0 |
testc10 | 入力が 10 |
testc20 | 入力が 20 |
testc30 | 入力が 30 |
課題0802
コンソールからxy座標の点を2点入力させ、その2点間の距離を求めるプログラム Distance.java をパッケージ j1.lesson08 に作成しなさい。
ただし、「xy座標の点を2点入力させ、その2点間の距離を求める」メソッドとして、名前が distance で、引数として4つの実数をもつメソッドを定義し、メソッド内部で引数を元に距離を計算して実数の戻り値を返すこと。引数の順番は、(始点x, 始点y, 終点x, 終点y) の順とする。
始点の x の入力を促すコンソールへの入力要求は次のように表示する。
始点のxを入力:
始点の y の入力を促すコンソールへの入力要求は次のように表示する。
始点のyを入力:
終点の x の入力を促すコンソールへの入力要求は次のように表示する。
終点のxを入力:
終点の y の入力を促すコンソールへの入力要求は次のように表示する。
終点のyを入力:
結果の表示方法は次の通りとする。
距離は x
ただし、x の部分は distance メソッド内での計算結果を返して出力すること
結果の例
入力に始点座標(-5.0,3.0)、終点(2.5,-4.0)を指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。
始点のxを入力:-5.0 始点のyを入力:3.0 終点のxを入力:2.5 終点のyを入力:-4.0 距離は10.259142264341596
手順
指定した箇所で必ずテストを行うこと。
- パッケージ j1.lesson08 にクラス Distance を作成 (ファイル名は Distance.javaとなる)
- クラス内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
- 必ず throws IOException の記述を付加しておくこと (つまり、import java.io.*;も必要となる)
- クラス内に必要なメソッド (distance(double,double,double,double)) の骨格を作成 (こちらには throws IOException は必要ない)
- テスト項目「Distance に対する骨格テスト」をパス
- main以外のメソッド内に課題の内容を実装
- mainから各メソッドを呼び出して、メソッドが正しく動作しているか確認
- テスト項目「Distance に対する単体テスト」をパス
- mainメソッド内に課題の内容を実装
- いくつかテストを行って、プログラムが正しく動作しているか確認
- テスト項目「Distance に対する機能テスト」をパス
テストの失敗メッセージ
骨格テスト
メッセージ | 詳細 |
---|---|
(クラス名), existence | パッケージ内に課題で指定したクラスが存在していない。パッケージやクラス名を確認 |
(メソッド名), existence | 指定されたメソッドが存在しない |
(メソッド名), public | メソッドを作る際に public が抜けている |
(メソッド名), static | メソッドを作る際に static が抜けている |
(メソッド名), type <T> | メソッドを作る際に戻り値型の指定が間違えている。正しくは<T>に表示された型 |
(メソッド名), throws ... | メソッドを作る際に throws... の指定がない |
単体テスト
メッセージ | 詳細 |
---|---|
(メソッド名), 期待された結果と異なります | (メソッド名)を起動した結果が期待された結果と異なる。テスト項目を参照 |
単体テストの項目
テスト失敗時に「Results」の欄の左側に出る「test~」は、テストの項目名を表している。
項目名 | 詳細 |
---|---|
testDistance_0 | distance メソッドを 実引数 (0.0, 0.0, 0.0, 0.0) で起動した |
testDistance_1a | distance メソッドを 実引数 (1.0, 0.0, 0.0, 0.0) で起動した |
testDistance_1b | distance メソッドを 実引数 (0.0, 1.0, 0.0, 0.0) で起動した |
testDistance_1c | distance メソッドを 実引数 (0.0, 0.0, 1.0, 0.0) で起動した |
testDistance_1d | distance メソッドを 実引数 (0.0, 0.0, 0.0, 1.0) で起動した |
testDistance_2a | distance メソッドを 実引数 (1.0, 1.0, 0.0, 0.0) で起動した |
testDistance_2b | distance メソッドを 実引数 (0.0, 1.0, 1.0, 0.0) で起動した |
testDistance_2c | distance メソッドを 実引数 (0.0, 0.0, 1.0, 1.0) で起動した |
testDistance_2d | distance メソッドを 実引数 (1.0, 0.0, 0.0, 1.0) で起動した |
testDistance_5 | distance メソッドを 実引数 (-1.0, -1.0, 2.0, 3.0) で起動した |
testDistance_sample | distance メソッドを 実引数 (-5.0, 3.0, 2.5, -4.0) で起動した |
機能テスト
メッセージ | 詳細 |
---|---|
余計な入力を待っていると考えられます | コンソール入力を取得する命令を余計に行っていないか確認 |
次の入力を変換できませんでした (???) | ??? を取得しようとして失敗している。コンソール入力を取得する命令を確認 |
期待された結果と異なります | 出力された結果が期待された値と異なる。「期待された値」と「実際の値」を比較 (エラーメッセージが出力されているエリアの下のほうにあるバーをスクロールさせれば見ることができる) し確認。他にも直接プログラムを実行して結果を調べたり、エラーメッセージの2行目にあるat以下を参考にプログラムを見直す |
無限ループの可能性 | 一定時間内にプログラムが終了しなかった。ループが無限に続いていないか確認 |
機能テストの項目
テスト失敗時に「Results」の欄の左側に出る「test~」は、テストの項目名を表している。
項目名 | 詳細 |
---|---|
test0 | 入力が順に "0.0", "0.0", "0.0", "0.0" |
testsample | 入力が順に "-5.0", "3.0", "2.5", "-4.0" |
課題0803 (optional)
コンソールから時刻(時、分、秒)と、その時刻からの経過時間(時、分、秒)を入力させ、経過後の時刻を計算し表示するプログラム TimeAdd.java をパッケージ j1.lesson08 に作成しなさい。
不正な時刻が入力された場合は考慮しなくて良い。
ただし、「コンソールから時刻(時、分、秒)と、その時刻からの経過時間(時、分、秒)を入力させ、経過後の時刻を計算」は、名前が timeToSec で、引数として3つの整数をもつメソッドを定義し、メソッド内部で引数を元に、与えられた時刻を0時0分0秒からの経過秒数に変換して戻り値として返す。引数の順番は(時, 分, 秒)とする。
そして、名前が printTime で、戻り値型が void で、引数として1つの整数をもち、0時0分0秒からの経過秒数を h時m分s秒 という形式の文字列に変換して表示するメソッドを定義せよ。(与えられた秒数によっては、hが 24 以上になる場合もある)
それぞれのメソッドの実引数として負の値が入力された場合は考慮しない。
2つのメソッドは共にmainメソッドの中から呼び出されることとする。
時の入力を促すコンソールへの入力要求は次のように表示する。
時を入力:
分の入力を促すコンソールへの入力要求は次のように表示する。
分を入力:
秒の入力を促すコンソールへの入力要求は次のように表示する。
秒を入力:
足される時の入力を促すコンソールへの入力要求は次のように表示する。
加算する時を入力:
足される分の入力を促すコンソールへの入力要求は次のように表示する。
加算する分を入力:
足される秒の入力を促すコンソールへの入力要求は次のように表示する。
加算する秒を入力:
結果の例
入力に13時30分10秒と5時40分15秒を指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。
時を入力:13 分を入力:30 秒を入力:10 加算する時を入力:5 加算する分を入力:40 加算する秒を入力:15 19時10分25秒
手順
指定した箇所で必ずテストを行うこと。
- パッケージ j1.lesson08 にクラス TimeAdd を作成 (ファイル名は TimeAdd.javaとなる)
- クラス内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
- 必ず throws IOException の記述を付加しておくこと (つまり、import java.io.*;も必要となる)
- クラス TimeAdd 内に必要なメソッド (timeToSec(int,int,int), printTime(int)) の骨格を作成 (こちらには throws IOException は必要ない)
- テスト項目「TimeAdd に対する骨格テスト」をパス
- main以外のメソッド内に課題の内容を実装
- mainから各メソッドを呼び出して、メソッドが正しく動作しているか確認
- テスト項目「TimeAdd に対する単体テスト」をパス
- mainメソッド内に課題の内容を実装
- いくつかテストを行って、プログラムが正しく動作しているか確認
- テスト項目「TimeAdd に対する機能テスト」をパス
ヒント
時間の足し算は、秒や分の桁上がりを考えるのが非常に面倒である。時間を秒単位で表してから足し算を行い、秒を時間に変換してやることで簡単に行える。
テストの失敗メッセージ
骨格テスト
メッセージ | 詳細 |
---|---|
(クラス名), existence | パッケージ内に課題で指定したクラスが存在していない。パッケージやクラス名を確認 |
(メソッド名), existence | 指定されたメソッドが存在しない |
(メソッド名), public | メソッドを作る際に public が抜けている |
(メソッド名), static | メソッドを作る際に static が抜けている |
(メソッド名), type <T> | メソッドを作る際に戻り値型の指定が間違えている。正しくは<T>に表示された型 |
(メソッド名), throws ... | メソッドを作る際に throws... の指定がない |
単体テスト
メッセージ | 詳細 |
---|---|
(メソッド名), 期待された結果と異なります | (メソッド名)を起動した結果が期待された結果と異なる。テスト項目を参照 |
単体テストの項目
テスト失敗時に「Results」の欄の左側に出る「test~」は、テストの項目名を表している。
項目名 | 詳細 |
---|---|
testTimeToSec_0_0_0 | timeToSec メソッドを 実引数 (0, 0, 0) で起動した |
testTimeToSec_0_0_1 | timeToSec メソッドを 実引数 (0, 0, 1) で起動した |
testTimeToSec_0_1_0 | timeToSec メソッドを 実引数 (0, 1, 0) で起動した |
testTimeToSec_1_0_0 | timeToSec メソッドを 実引数 (1, 0, 0) で起動した |
testTimeToSec_1_2_3 | timeToSec メソッドを 実引数 (1, 2, 3) で起動した |
testPrintTime_1s | printTime メソッドを 実引数 (1) で起動した |
testPrintTime_30s | printTime メソッドを 実引数 (30) で起動した |
testPrintTime_59s | printTime メソッドを 実引数 (59) で起動した |
testPrintTime_1m | printTime メソッドを 実引数 (60) で起動した |
testPrintTime_30m | printTime メソッドを 実引数 (1800) で起動した |
testPrintTime_59m59s | printTime メソッドを 実引数 (3599) で起動した |
testPrintTime_1h | printTime メソッドを 実引数 (3600) で起動した |
testPrintTime_12h | printTime メソッドを 実引数 (43200) で起動した |
testPrintTime_23h59m59s | printTime メソッドを 実引数 (86399) で起動した |
testPrintTime_24h | printTime メソッドを 実引数 (86400) で起動した |
機能テスト
メッセージ | 詳細 |
---|---|
余計な入力を待っていると考えられます | コンソール入力を取得する命令を余計に行っていないか確認 |
次の入力を変換できませんでした (???) | ??? を取得しようとして失敗している。コンソール入力を取得する命令を確認 |
期待された結果と異なります | 出力された結果が期待された値と異なる。「期待された値」と「実際の値」を比較 (エラーメッセージが出力されているエリアの下のほうにあるバーをスクロールさせれば見ることができる) し確認。他にも直接プログラムを実行して結果を調べたり、エラーメッセージの2行目にあるat以下を参考にプログラムを見直す |
無限ループの可能性 | 一定時間内にプログラムが終了しなかった。ループが無限に続いていないか確認 |
機能テストの項目
テスト失敗時に「Results」の欄の左側に出る「test~」は、テストの項目名を表している。
項目名 | 詳細 |
---|---|
test0h0m0s_0h0m0s | 入力が全て "0" |
test1h2m3s_4h5m6s | 入力が順に "1", "2", "3", "4", "5", "6" |
test0h59m59s_0h0m1s | 入力が順に "0", "59", "59", "0", "0", "1" |
test22h15m30s_1h44m30s | 入力が順に "22", "15", "30", "1", "44", "30" |
課題0804 (optional)
コンソールから 2 以上の整数を入力させ、その素因数を小さい順に全て列挙するプログラム PrimeFactors.java をパッケージ j1.lesson08 に作成しなさい。
ただし、名前が minimumPrimeFactorOf で、引数として1つの整数をもち、与えられた引数 n に対して、その 1 を除く最小の約数を整数で返すメソッドを定義せよ。また、n が 1 以下の場合は考慮しなくてよい。
2以上の整数の入力を促すコンソールへの入力要求は次のように表示する。
2以上の整数を入力:
2未満の整数が入力されたら、以下のように表示して終了する。
2以上の整数を入力してください
結果の例
入力に924を指定した場合、プログラムを終了まで実行した際のコンソールは以下のようになっている。
2以上の整数を入力:924 2 2 3 7 11
手順
指定した箇所で必ずテストを行うこと。
- パッケージ j1.lesson08 にクラス PrimeFactors を作成 (ファイル名は PrimeFactors.javaとなる)
- クラス PrimeFactors 内に throws IOException の指定をした mainメソッド (public static void main(String[] args) throws IOException { }) を作成
- 必ず throws IOException の記述を付加しておくこと (つまり、import java.io.*;も必要となる)
- クラス内に必要なメソッド (minimumPrimeFactorOf) の骨格を作成 (こちらには throws IOException は必要ない)
- テスト項目「PrimeFactors に対する骨格テスト」をパス
- main以外のメソッド内に課題の内容を実装
- mainから各メソッドを呼び出して、メソッドが正しく動作しているか確認
- テスト項目「PrimeFactors に対する単体テスト」をパス
- mainメソッド内に課題の内容を実装
- いくつかテストを行って、プログラムが正しく動作しているか確認
- テスト項目「PrimeFactors に対する機能テスト」をパス
ヒント
素因数がなくなるまで、最も小さい素因数を取り出す操作を繰り返す
テストの失敗メッセージ
骨格テスト
メッセージ | 詳細 |
---|---|
(クラス名), existence | パッケージ内に課題で指定したクラスが存在していない。パッケージやクラス名を確認 |
(メソッド名), existence | 指定されたメソッドが存在しない |
(メソッド名), public | メソッドを作る際に public が抜けている |
(メソッド名), static | メソッドを作る際に static が抜けている |
(メソッド名), type <T> | メソッドを作る際に戻り値型の指定が間違えている。正しくは<T>に表示された型 |
(メソッド名), throws ... | メソッドを作る際に throws... の指定がない |
単体テスト
メッセージ | 詳細 |
---|---|
(メソッド名), 期待された結果と異なります | (メソッド名)を起動した結果が期待された結果と異なる。テスト項目を参照 |
単体テストの項目
テスト失敗時に「Results」の欄の左側に出る「test~」は、テストの項目名を表している。
項目名 | 詳細 |
---|---|
testMinimumPrimeFactorOf_2 | minimumFactorOf メソッドを 実引数 (2) で起動した |
testMinimumPrimeFactorOf_3 | minimumFactorOf メソッドを 実引数 (3) で起動した |
testMinimumPrimeFactorOf_4 | minimumFactorOf メソッドを 実引数 (4) で起動した |
testMinimumPrimeFactorOf_5 | minimumFactorOf メソッドを 実引数 (5) で起動した |
testMinimumPrimeFactorOf_6 | minimumFactorOf メソッドを 実引数 (6) で起動した |
testMinimumPrimeFactorOf_7 | minimumFactorOf メソッドを 実引数 (7) で起動した |
testMinimumPrimeFactorOf_8 | minimumFactorOf メソッドを 実引数 (8) で起動した |
testMinimumPrimeFactorOf_9 | minimumFactorOf メソッドを 実引数 (9) で起動した |
testMinimumPrimeFactorOf_221 | minimumFactorOf メソッドを 実引数 (221) で起動した |
testMinimumPrimeFactorOf_257 | minimumFactorOf メソッドを 実引数 (257) で起動した |
testMinimumPrimeFactorOf_16777219 | minimumFactorOf メソッドを 実引数 (16777219) で起動した |
機能テスト
メッセージ | 詳細 |
---|---|
余計な入力を待っていると考えられます | コンソール入力を取得する命令を2回以上行っていないか確認 |
次の入力を変換できませんでした (???) | ??? を取得しようとして失敗している。コンソール入力を取得する命令を確認 |
期待された結果と異なります | 出力された結果が期待された値と異なる。「期待された値」と「実際の値」を比較 (エラーメッセージが出力されているエリアの下のほうにあるバーをスクロールさせれば見ることができる) し確認。他にも直接プログラムを実行して結果を調べたり、エラーメッセージの2行目にあるat以下を参考にプログラムを見直す |
無限ループの可能性 | 一定時間内にプログラムが終了しなかった。ループが無限に続いていないか確認 |
機能テストの項目
テスト失敗時に「Results」の欄の左側に出る「test~」は、テストの項目名を表している。
項目名 | 詳細 |
---|---|
testM5 | 入力が -5 |
test0 | 入力が 0 |
test1 | 入力が 1 |
test2 | 入力が 2 |
test3 | 入力が 3 |
test4 | 入力が 4 |
test360 | 入力が 360 |
test16777216 | 入力が 16777216 |
test16777217 | 入力が 16777217 |