1. 程式人生 > >java中實現對時間的操作

java中實現對時間的操作

所屬類別:類的成員變數與方法、構造方法

題目:

 在程式中經常要對時間進行操作但是並沒有時間型別的資料。 那麼我們可以自己實現一個時間類來滿足程式中的需要。
 定義名為MyTime的類其中應有三個整型成員時hour分minute秒second為了保證資料的安全性這三個成員變數應宣告為私有。
 為MyTime類定義構造方法以方便建立物件時初始化成員變數。 再定義display方法用於將時間資訊打印出來。
為MyTime類新增以下方法
addSecond(int sec)
addMinute(int min)

addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou)

實現程式碼如下:

import java.util.Scanner;

public class MyTime {
	int hour;
	int minute;
	int second;

	//建立無參建構函式,初始化時間
	public MyTime() {
		this.hour = 12;
		this.minute = 45;
		this.second = 20;
	}

	//建立帶一個引數的建構函式,對時進行操作
	public MyTime(int hour) {
		super();
		this.hour = hour;
	}

	//構造帶有兩個引數的建構函式,對時和分進行操作
	public MyTime(int hour, int minute) {
		super();
		this.hour = hour;
		this.minute = minute;
	}

	//構造帶有三個引數的建構函式
	public MyTime(int hour, int minute, int second) {
		super();
		this.hour = hour;
		this.minute = minute;
		this.second = second;
	}

	//輸出時間格式
	public void display() {
		System.out.println("time is:" + hour + ":" + minute + ":" + second);
	}

	//加秒演算法
	public void addSecond(int sec) {
		second = second + sec;
		if (second > 60) {
			minute = minute + second / 60;
			second = second % 60;
		}
	}

	//加分演算法
	public void addMinute(int min) {
		minute += min;
		if (minute > 60) {
			hour += minute / 60;
			minute = minute % 60;
		}
	}

	//加時演算法
	public void addHour(int hou) {
		hour += hou;
		if (hour > 24) {
			hour = hour % 24;
		}
	}

	//減秒演算法
	public void subSecond(int sec) {
		second -= sec;
		if (second < 0) {
			if (Math.abs(second) > 60) {
				minute += (Math.abs(second)) / 60;
			} else {
				minute--;
			}
		}
		second = Math.abs(second);
	}

	//減分演算法
	public void subMinute(int min) {
		minute -= min;
		if (minute < 0) {
			if (Math.abs(minute) > 60) {
				hour += (Math.abs(minute)) / 60;
			} else {
				hour--;
			}
			minute = Math.abs(minute);
		}
	}

	//減時演算法
	public void subHour(int hou) {
		hour -= hou;
		if (hour < 0) {
			hour += 24;
		}
	}

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		MyTime mt = new MyTime();
		mt.display();
		
		//可手動輸入
		mt.addSecond(45);
		mt.addMinute(20);
		mt.addHour(13);
		mt.subSecond(50);
		mt.subMinute(60);
		mt.subHour(13);
		mt.display();
		
		//如下可以自定義輸入,由鍵盤錄入值
		mt.addSecond(sc.nextInt());
		mt.addMinute(sc.nextInt());
		mt.addHour(sc.nextInt());
		mt.subSecond(sc.nextInt());
		mt.subMinute(sc.nextInt());
		mt.addHour(sc.nextInt());
		mt.display();
	}
}