1.在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要。

定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second),为了保证数据的安全性,这三个成员变量应声明为私有。

为MyTime类定义构造方法,以方便创建对象时初始化成员变量。

再定义diaplay方法,用于将时间信息打印出来。

为MyTime类添加以下方法:

addSecond(int sec)

addMinute(int min)

addHour(int hou)

subSecond(int sec)

subMinute(int min)

subHour(int hou)

分别对时、分、秒进行加减运算。

Java代码:

package com.oricle.demo06;

public class MyTime {
//私有成员变量
private int hour;
private int minute;
private int second; //构造方法
public MyTime(int hour, int minute,int second){
this.hour=hour;
this.minute=minute;
this.second=second; } public int getHour() {
return hour;
}
public void setHour(int hour) {
this.hour = hour;
}
public int getMinute() {
return minute;
}
public void setMinute(int minute) {
this.minute = minute;
}
public int getSecond() {
return second;
}
public void setSecond(int second) {
this.second = second;
}
//秒+
public void addSecond(int sec){
second +=sec;
huansuan();
}
//分钟+
public void addMinute(int min){
minute +=min;
huansuan();
}
//小时+
public void addHour(int hou){
hour +=hou;
huansuan();
}
//秒-
public void subSecond(int sec){
second -=sec;
huansuan();
}
//分钟-
public void subMinute(int min){
minute -=min;
huansuan();
}
//小时-
public void subHour(int hou){
hour -=hou;
huansuan();
}
//打印显示时间
public void display()
{
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 void huansuan(){
//秒(同下)
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;
}
}
} }

测试类:

package com.oricle.demo06;

public class Test3 {

    public static void main(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 class Vehicles {
private String brand;
private String color;
//构造方法
public Vehicles(String brand, String color) {
this.brand = brand;
this.color = color;
}
public void run() {
System.out.println("我已经开动了");
}
public void showinfo() {
System.out.println("商标: " + brand);
System.out.println("颜色: " + color);
}
}

Car(小汽车)类

public class Car extends Vehicles {
private int seats;
// 构造方法
public Car(String brand, String color, int seats) {
super(brand, color);
this.seats = seats;
} public void showCar() {
super.showinfo();
System.out.println("座位: " + seats + " 个");
}
}

Truck(卡车)类

public class Truck extends Vehicles {
private float load; public Truck(String brand, String color, float load) {
super(brand, color);
this.load = load;
} public void showTruck() {
super.showinfo();
System.out.println("载重 :" + load + "吨");
}
}

测试类

public class Test {

    public static void main(String[] args) {
Vehicles vehicle = new Vehicles("奥迪","黑色");
vehicle.showinfo();
Car car = new Car("桑塔纳","红色", 5);
car.showCar();
Truck truck = new Truck("解放","蓝色",10);
truck.showTruck();
} }

publicclass Truck extends Vehicles {

privatefloatload;

public Truck(String brand, String color, floatload) {

super(brand, color);

this.load = load;

}

publicvoid showTruck() {

super.showinfo();

System.out.println("载重:"
+ load + "吨");

}

}

Normal
0

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman",serif;}

Java构造方法经典例题的更多相关文章

  1. Java数组经典例题

    数组中元素的求和 public class T02 { public static void main(String[] args) { int[][]arr=new int[][]{{1,2,3,4 ...

  2. Java之线程通信的应用:经典例题:生产者/消费者问题

    /** * 线程通信的应用:经典例题:生产者/消费者问题 * * 生产者(Productor)将产品交给店员(Clerk),而消费者(Customer)从店员处取走产品, * 店员一次只能持有固定数量 ...

  3. C语言经典例题100

    C语言经典例题100 来源 http://www.fishc.com 适合初学者 ----------------------------------------------------------- ...

  4. C语言中的经典例题用javascript怎么解?(一)

    C语言中的经典例题用javascript怎么解?(一) 一.1+2+3+……+100=?        <script type="text/javascript">  ...

  5. 【JS中循环嵌套常见的六大经典例题+六大图形题,你知道哪几个?】

    首先,了解一下循环嵌套的特点:外层循环转一次,内层循环转一圈. 在上一篇随笔中详细介绍了JS中的分支结构和循环结构,我们来简单的回顾一下For循环结构: 1.for循环有三个表达式,分别为: ①定义循 ...

  6. 到底什么是dp思想(内含大量经典例题,附带详细解析)

    期末了,通过写博客的方式复习一下dp,把自己理解的dp思想通过样例全部说出来 说说我所理解的dp思想 dp一般用于解决多阶段决策问题,即每个阶段都要做一个决策,全部的决策是一个决策序列,要你求一个 最 ...

  7. Java构造方法与析构方法实例剖析

    Java构造方法 类有一个特殊的成员方法叫作构造方法,它的作用是创建对象并初始化成员变量.在创建对象时,会自动调用类的构造方法. 构造方法定义规则:Java 中的构造方法必须与该类具有相同的名字,并且 ...

  8. Java 生产者消费者 & 例题

    Queue http://m635674608.iteye.com/blog/1739860 http://www.iteye.com/problems/84758 http://blog.csdn. ...

  9. java设计模式大全 Design pattern samples in Java(最经典最全的资料)

    java设计模式大全 Design pattern samples in Java(最经典最全的资料) 2015年06月19日 13:10:58 阅读数:11100 Design pattern sa ...

随机推荐

  1. bzoj5506:[gzoi2019]旅行者

    传送门 正反两边dijkstra染色,然后枚举一下边,求出最小值就好啦 代码: #include<cstdio> #include<iostream> #include< ...

  2. ECharts 上手

    一.获取 ECharts 你可以通过以下几种方式获取 ECharts. 从官网下载界面选择你需要的版本下载,根据开发者功能和体积上的需求,我们提供了不同打包的下载,如果你在体积上没有要求,可以直接下载 ...

  3. PAT甲级——1096 Consecutive Factors (数学题)

    本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/91349859 1096 Consecutive Factors  ...

  4. props简单小栗子

    props简单小栗子 可以直接copy查看结果 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  5. Vue 项目: npm run dev b报错 “'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件。”

    前提: 电脑已经安装了nodeJS和npm,  项目是直接下载的zip包. 报错步骤为1:cd /d 目录: 2. npm ren dev  -------> 报错如下: > webpac ...

  6. Seven-segment Display 贪心选择,快速判断能否有解

    https://csacademy.com/contest/round-39/task/seven-segment-display/ 可以知道,只有1是无解 而且肯定是选出来的位数约小越好. 位数 = ...

  7. (转)/etc/sysctl.conf 调优 & 优化Linux内核参数

    /etc/sysctl.conf 调优 & 优化Linux内核参数 from: http://apps.hi.baidu.com/share/detail/15652067 http://ke ...

  8. SQL2008无法启动,报错"17051"解决方法

    SQL2008无法启动,这是错误日志: C:/Program Files/Microsoft SQL Server/MSSQL10_50.MSSQLSERVER/MSSQL/Log 2011-06-0 ...

  9. nodejs加密解密

    nodejs是通集成在内核中的crypto模块来完成加密解密. 常用加密解密模块化代码: /** * Created by linli on 2015/8/25. */ var crypto = re ...

  10. 开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务

    项目介绍: Hangfire:是一个开源的job调度系统,支持分布式JOB!! Hangfire.HttpJob 是我针对Hangfire开发的一个组件,该组件和Hangfire本身是独立的.可以独立 ...