1.在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要。
定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second),为了保证数据的安全性,这三个成员变量应声明为私有。
为MyTime类定义构造方法,以方便创建对象时初始化成员变量。
再定义diaplay方法,用于将时间信息打印出来。
为MyTime类添加以下方法:
addSecond(intsec)
addMinute(intmin)
addHour(inthou)
subSecond(intsec)
subMinute(intmin)
subHour(int hou)
分别对时、分、秒进行加减运算。
Java代码:
packagecom.oricle.demo06;public classMyTime {//私有成员变量
private inthour;private intminute;private intsecond;//构造方法
public MyTime(int hour, int minute,intsecond){this.hour=hour;this.minute=minute;this.second=second;
}public intgetHour() {returnhour;
}public void setHour(inthour) {this.hour =hour;
}public intgetMinute() {returnminute;
}public void setMinute(intminute) {this.minute =minute;
}public intgetSecond() {returnsecond;
}public void setSecond(intsecond) {this.second =second;
}//秒+
public void addSecond(intsec){
second+=sec;
huansuan();
}//分钟+
public void addMinute(intmin){
minute+=min;
huansuan();
}//小时+
public void addHour(inthou){
hour+=hou;
huansuan();
}//秒-
public void subSecond(intsec){
second-=sec;
huansuan();
}//分钟-
public void subMinute(intmin){
minute-=min;
huansuan();
}//小时-
public void subHour(inthou){
hour-=hou;
huansuan();
}//打印显示时间
public voiddisplay()
{
huansuan();//调用时间换算判断
String h=null;
String m=null;
String s=null;//判断输入的时间为两位数//小时
if(hour<10){
h="0"+hour;
}else{
h=hour+"";
}//秒
if(second<10){
s="0"+second;
}else{
s=second+"";
}//分钟
if(minute<10){
m="0"+minute;
}else{
m=minute+"";
}//打印输出该时间
System.out.println(h+"小时"+m+"分钟"+s+"秒");
}public voidhuansuan(){//秒(同下)
if(second>=60){
minute=minute+second/60;//分钟加上秒数多的部分,即秒转换为分钟
second =second%60;//描述剩余部分
}else if(second<0){if(second%60!=0){
minute=minute+(second/60-1);//-1是秒从分钟借1(分钟)
second=second%60+60;//+60是从分钟借1,加60秒(一分钟)
}else{
minute=minute+second/60;
second=second%60;
}
}//分钟
if(minute>=60){
hour=hour+minute/60;
minute=minute%60;
}else if(minute<0){if(minute%60!=0){
hour=hour +(minute/60-1);
minute=minute%60+60;
}else{
hour=hour +minute/60;
minute=minute%60;
}
}//小时
if(hour>=24){
hour=hour%24;
}else if(hour<0){if(hour%24!=0){
hour=hour%24+24;
}else{
hour=hour%24;
}
}
}
}
测试类:
packagecom.oricle.demo06;public classTest3 {public static voidmain(String[] args) {
MyTime t=new MyTime(10,10,-20);//当前时间
t.display();
System.out.println();//小时+
t.addHour(1);
t.display();//分钟+
t.addMinute(10);
t.display();//秒+
t.addSecond(-70);
t.display();
System.out.println();//小时-
t.subHour(1);
t.display();//分钟-
t.subMinute(10);
t.display();//秒-
t.subSecond(30);
t.display();
}
}
结果演示:
2.定义一个名为Vehicles(交通工具)的基类,该类中应包含String类型的成员属性brand(商标)和color(颜色),还应包含成员方法run(行驶,在控制台显示“我已经开动了”)和showInfo(显示信息,在控制台显示商标和颜色),并编写构造方法初始化其成员属性。
编写Car(小汽车)类继承于Vehicles类,增加int型成员属性seats(座位),还应增加成员方法showCar(在控制台显示小汽车的信息),并编写构造方法。
编写Truck(卡车)类继承于Vehicles类,增加float型成员属性load(载重),还应增加成员方法showTruck(在控制台显示卡车的信息),并编写构造方法。
在main方法中测试以上各类。
Vehicles类
public classVehicles {privateString brand;privateString color;//构造方法
publicVehicles(String brand, String color) {this.brand =brand;this.color =color;
}public voidrun() {
System.out.println("我已经开动了");
}public voidshowinfo() {
System.out.println("商标: " +brand);
System.out.println("颜色: " +color);
}
}
Car(小汽车)类
public class Car extendsVehicles {private intseats;//构造方法
public Car(String brand, String color, intseats) {super(brand, color);this.seats =seats;
}public voidshowCar() {super.showinfo();
System.out.println("座位: " + seats + " 个");
}
}
Truck(卡车)类
public class Truck extendsVehicles {private floatload;public Truck(String brand, String color, floatload) {super(brand, color);this.load =load;
}public voidshowTruck() {super.showinfo();
System.out.println("载重 :" + load + "吨");
}
}
测试类
public classTest {public static voidmain(String[] args) {
Vehicles vehicle= new Vehicles("奥迪","黑色");
vehicle.showinfo();
Car car= new Car("桑塔纳","红色", 5);
car.showCar();
Truck truck= new Truck("解放","蓝色",10);
truck.showTruck();
}
}
publicclassTruckextendsVehicles {
privatefloatload;
publicTruck(Stringbrand, Stringcolor,floatload) {
super(brand,color);
this.load=load;
}
publicvoidshowTruck() {
super.showinfo();
System.out.println("载重:"+load+"吨");
}
}