解答例 - j1.lesson08.TimeAdd

package j1.lesson08;

import java.io.*;

/**
 * 課題0803 - 解答例.
 @author s.arakawa
 @version $Id: TimeAdd_java.rps,v 1.1 2006/03/06 12:56:14 java2005 Exp $
 */
public class TimeAdd {

    /**
     * コンソールから時刻(時、分、秒)を2回入力させ、それらの時間の和を計算し表示するプログラム。
     * 不正な時刻が入力された場合は考慮しなくて良い。
     @param args 無視される
     @throws IOException 入力時に例外が発生した場合
     */
    public static void main(String[] argsthrows IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("時を入力:");
        int hour = Integer.parseInt(reader.readLine());
        System.out.print("分を入力:");
        int min = Integer.parseInt(reader.readLine());
        System.out.print("秒を入力:");
        int sec = Integer.parseInt(reader.readLine());
        
        System.out.print("加算する時を入力:");
        int dhour = Integer.parseInt(reader.readLine());
        System.out.print("加算する分を入力:");
        int dmin = Integer.parseInt(reader.readLine());
        System.out.print("加算する秒を入力:");
        int dsec = Integer.parseInt(reader.readLine());
        
        int timeAsSec = timeToSec(hour, min, sec+ timeToSec(dhour, dmin, dsec);
        
        printTime(timeAsSec);
    }
    
    /**
     * 引数で与えられた時刻(時、分、秒)を、0時0分0秒からの経過秒数に変換して返す。
     @param hour 時
     @param min 分
     @param sec 秒
     @return 与えられた時刻を0時0分0秒からの経過秒数に変換したもの
     */
    public static int timeToSec(int hour, int min, int sec) {
        return hour * 3600 + min * 60 + sec;
    }
    
    /**
     * 0時0分0秒からの経過秒数を <code>h時m分s秒</code> という形式の文字列に変換して表示する。
     * 与えられた秒数によっては、hが <code>24</code> 以上になる場合もある。
     * 引数に負の値が入力された場合は考慮しない。
     @param sec 0時0分0秒からの経過秒数
     */
    public static void printTime(int sec) {
        int hour = sec / 3600;
        int min = sec / 60 60;
        sec = sec % 60;
        System.out.println(hour + "時" + min + "分" + sec + "秒");
    }
}