java编写日期年月日的代码_求Java高手写道题设int year,month,day分别表示一个日期中的年月日,试编程求a) 对于任意三个整数,判...

共回答了15个问题采纳率:100%

import java.util.*;

public class Test24 {

public static void main(String[] args) {

int year1, month1, day1;

int num;

Scanner scan = new Scanner(System.in);

MyDate d1, d2;

System.out.println("请输入一个日期");

System.out.print("年:");

year1 = scan.nextInt();

System.out.print("月:");

month1 = scan.nextInt();

System.out.print("日:");

day1 = scan.nextInt();

try{

d1 = new MyDate(year1, month1, day1);

System.out.println(d1.toString() + " 是一个合法日期");

}

catch(Exception e){

System.out.println(" 非法日期");

}

System.out.println("请输入一个日期");

System.out.print("年:");

year1 = scan.nextInt();

System.out.print("月:");

month1 = scan.nextInt();

System.out.print("日:");

day1 = scan.nextInt();

System.out.println("时间间隔:");

num = scan.nextInt();

try{

d1 = new MyDate(year1, month1, day1);

d2 = d1.dateAdd(num);

System.out.println(d1.toString() + " 在" + num + "天后就是 " + d2.toString());

}

catch(Exception e){

System.out.println(" 非法日期");

}

try{

d1 = new MyDate(2009, 2, 27);

d2 = new MyDate(2011, 3, 1);

num = d1.dateDiff(d1, d2);

System.out.println(d1.toString() + " ~ " + d2.toString() + " 相隔 " + num + " 天");

}

catch(Exception e){

System.out.println(" 非法日期");

}

}

}

class MyDate{

private int year;

private int month;

private int day;

private int[] days = new int[]{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

public MyDate(){

}

public MyDate(int year, int month, int day) throws Exception{

if(year < 0 || month12 || daydays[month-1]){

throw new Exception("非法日期");

}

if(month == 2){

if(isLeapYear(year)==true && day>29){

throw new Exception("非法日期");

}

if(isLeapYear(year)==false && day>28){

throw new Exception("非法日期");

}

}

this.year = year;

this.month = month;

this.day = day;

}

//给定一个日期值,计算若干天后的日期值

public MyDate dateAdd(int num) throws Exception{

MyDate d = new MyDate(this.year, this.month, this.day);

days[1] = isLeapYear(d.year) ? 29 : 28;

d.day += num;

if(num > 0){

while(d.day > days[d.month-1]){

d.day -= days[d.month-1];

d.month++;

if(d.month > 12){

d.month = 1;

d.year++;

days[1] = isLeapYear(d.year) ? 29 : 28;

}

}

}

else{

while(d.day

1年前

13

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值