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[] args) throws 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 + "秒");
}
}
|