// 24 時間表記の時間を入力し、それを 12 時間表記の時間として出力するプログラム import java.io.*; import java.lang.*; public class TimeTransformation { // 24 時間表記の時間を 12 時間表記に変換するメソッド // 引数 (time): 24 時間表記の時間 public static String transformTime(int time) { // transTime: 変換された 12 時間表記の時間(数だけ) int transTime; // result: transTime に「am.」または「pm.」をつけて午前・午後の時間を表したもの String result; if (time == 24) { // 入力された 24 時間表記の時間が「24 時」だった場合 result = "0 am."; } else if (time == 12) { // 入力された 24 時間表記の時間が「12 時」だった場合 result = time + " pm."; } else if (time > 12) { // 入力された 24 時間表記の時間が 12 時より大きな数(午後 12 時以降、午前 12 時以前)だった場合 transTime = time - 12; result = transTime + " pm."; } else { // 上記以外(入力された 24 時間表記の時間が 12 時より小さな数(午前 0 時以降、午後 12 時以前)だった場合 result = time + " am."; } // 変換結果(「am.」または「pm.」がついた時間表記)を返す処理 return result; } public static void main(String[] args) { // time: 標準入力で入力する 24 時間表記の時間 // flag: time 入力時の間違い入力防止のための変数 (0 が入っているときは間違い入力(数に変換できない値や、0 ~ 24 以外の数が入力された場合)、1 が入ると適切な数が入力されたことを表す) int time, flag; // timeStr: time を標準入力で文字列として受け取るときの変数 // transformedTime: 12 時間表記に変更後の表記(「am.」または「pm.」つき) String timeStr, transformedTime; try { // 標準入力の入力準備 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("24時間表記の時間を12時間表記に直すプログラムです。"); // 変数 flag にはあらかじめ 0 を入れておく flag = 0; while (flag == 0) { // 変数 flag が 0 の間繰り返す = 間違った入力がされ続ける間繰り返す System.out.print("24時間表記の時間(0〜24の範囲の数だけ)を入力してください。 >"); // 24 時間表記の時間を標準入力で入力 timeStr = br.readLine(); try { // 入力された時間を数値に変換 time = Integer.parseInt(timeStr); if ((time >= 0) && (time <= 24)) { // 入力された時間が 0 ~ 24 の間だった場合 flag = 1; // 変数 flag に 1 を代入(これにより、次の while 文の繰り返しはされなくなり、繰り返しが終了) // transformTime メソッドで、12 時間表記に変換 transformedTime = transformTime(time); System.out.println("「" + time + "」の12時間表記の時間は「" + transformedTime + "」です。"); } else { // 入力された時間が 0 ~ 24 の間でなかった場合(マイナスの数や 25 以上の数だった場合) System.out.println("0〜24の範囲外の数が入力されました。"); } } catch(NumberFormatException e) { // 48 行目の処理(入力された時間を数値に変換する処理)で変換できなかった(数でない文字が入力されていた)場合の例外処理 // この例外処理は while 文内に入っているので、この例外処理が実行された場合、while 文が繰り返され、時間の入力しなおしとなる System.out.println("数値に変換できないデータが入力されました。"); } } } catch(IOException e) { // 標準入力ができなかった場合の例外処理 System.out.println("標準入力ができませんでした。"); } } }