黑马程序员技术交流社区
标题: 一道看似简单的编程题,只要会if都能做 [打印本页]
作者: 焚雨成灰 时间: 2014-3-13 08:21
标题: 一道看似简单的编程题,只要会if都能做
本帖最后由 焚雨成灰 于 2014-3-13 20:34 编辑
题目如下:
在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要。
定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second),为了保证数据的安全性,这三个成员变量应声明为私有。
为MyTime类定义构造方法,以方便创建对象时初始化成员变量。
再定义diaplay方法,用于将时间信息打印出来。
为MyTime类添加以下方法:
addSecond(intsec)
addMinute(intmin)
addHour(inthou)
subSecond(intsec)
subMinute(intmin)
subHour(inthou)
分别对时、分、秒进行加减运算。
为什么说它看似简单:
1.如果现在是0时0分59秒,那么加1秒,秒位会清0;如果加20000秒,秒位分位时位都要考虑
2.减时间那块如果现在是0时5分0秒,如果减60秒,分位减1;减61秒,分位减2。
3.只能用最基础的语法做
请问这道题该怎么搞?
PS:我上课去了,晚上再回来看;
作者: yunzhongzhuhuo 时间: 2014-3-13 09:27
这个与你的要求虽然不一样,但是功能都是一样的。。。
- import java.util.Calendar;
- import java.util.Date;
- public class Test {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- MyTime my=new MyTime();
- // my.addHour(0);
- my.addSecond(2000);
- my.display();
- }
- }
- class MyTime{
- private Calendar c=Calendar.getInstance();
-
- public MyTime() {
- c.setTime(new Date());
- }
-
- public MyTime(int hour,int minute,int second){
- c.set(Calendar.HOUR, hour);
- c.set(Calendar.MINUTE, minute);
- c.set(Calendar.SECOND, second);
-
- }
- public void addHour(int hour){
- c.add(Calendar.HOUR,hour);
- }
-
- public Calendar addMinute(int minute){
- c.add(Calendar.MINUTE, minute);
- return c;
- }
-
- public Calendar addSecond(int second){
- c.add(Calendar.SECOND,second);
- return c;
- }
-
- public void display(){
- String hour,min,sec;
- if(c.get(Calendar.HOUR)<10)
- hour="0"+c.get(Calendar.HOUR);
- else
- hour=c.get(Calendar.HOUR)+"";
- if(c.get(Calendar.MINUTE)<10)
- min="0"+c.get(Calendar.MINUTE);
- else
- min=c.get(Calendar.MINUTE)+"";
- if(c.get(Calendar.SECOND)<10)
- sec="0"+c.get(Calendar.SECOND);
- else
- sec=c.get(Calendar.SECOND)+"";
- System.out
- .println("现在的时间是:" + hour + ":" +min + ":" + sec);
-
- }
- }
复制代码
作者: 张贺 时间: 2014-3-13 11:21
作者: 12560zhang 时间: 2014-3-13 11:50
我只做了加法,减法你自己试着做吧,效果是你想要的
- import java.util.Scanner;
- public class MyTime {
- int oh;
- int om;
- int os;
- public MyTime(int oh, int om, int os) {
- this.oh = oh;
- this.om = om;
- this.os = os;
- }
- public void addHour(int h) {
- oh = oh + h;
- }
- public void addMinute(int m) {
- om = om + m;
- }
- public void addSecond(int s) {
- os = os + s;
- }
- public void showTime() {
- int time = oh * 3600 + om * 60 + os;
- int h = time / 3600 % 24;
- int m = time % 3600 / 60;
- int s = time % 3600 % 60;
- System.out.println("现在时间是" + h + "小时" + m + "分钟" + s + "秒");
- }
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入小时:");
- int h1 = sc.nextInt();
- System.out.println("请输入分钟:");
- int m1 = sc.nextInt();
- System.out.println("请输入秒:");
- int s1 = sc.nextInt();
- MyTime t1 = new MyTime(h1, m1, s1);// 初始化时间
- t1.showTime();// 显示时间
- System.out.println("请输入要增加的小时:");
- h1 = sc.nextInt();
- t1.addHour(h1);// 加一小时
- t1.showTime();
- System.out.println("要增加的分钟:");
- m1 = sc.nextInt();
- t1.addMinute(m1);// 加10分钟
- t1.showTime();
- System.out.println("要增加的秒数:");
- s1 = sc.nextInt();
- t1.addSecond(s1);// 加60秒
- t1.showTime();
- }
- }
复制代码
作者: flying 时间: 2014-3-13 14:16
定义一个枚举
- public enum Time {
- HOUR(0,null),MINUTE(0,"HOUR"),SECOND(0,"MINUTE");
- //记录数值
- private int number;
- //记录进位或者借位的名字
- private String next;
- private Time(int number,String next){
- this.next=next;
- this.number=number;
- }
- public int getNumber(){
- return this.number;
- }
- public void setTime(int number){
- this.number+=number;
- //如果减去的值太大 掏出异常
- if(this.number<0&&this.name().equals("HOUR")){
- throw new RuntimeException("减去的值太大");
- }
- //如果下一个不为空 则 向下个节位 或近位
- if(this.next!=null){
- int flag=this.number;
- //小于0的话借位 大于0的话进位
- if(flag<0){
- this.number=flag%60+60;
- Time.valueOf(this.next).setTime(flag/60-1);
- }else{
- this.number%=60;
- Time.valueOf(this.next).setTime(flag/60);
- }
-
- }
- }
- }
复制代码
MyTime类
- public class MyTime {
- public static void main(String[] args) {
- addMinute(3);
- show();
- addSecond(-3);
- show();
- }
- public static void show(){
- System.out.println(Time.HOUR.getNumber()+":"
- +Time.MINUTE.getNumber()+":"
- +Time.SECOND.getNumber());
- }
- private static void addMinute(int i) {
- Time.MINUTE.setTime(i);
- }
- private static void addHour(int i) {
- Time.HOUR.setTime(i);
- }
- private static void addSecond(int i) {
- Time.SECOND.setTime(i);
- }
- }
复制代码
作者: 焚雨成灰 时间: 2014-3-13 20:34
好像你的比较对
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |