求Java高手写道题

求Java高手写道题,第1张

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 || month<1 || month>12 || day<1 || day>days[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 <= 0){

d.day += days[(d.month+10)%12]

d.month--

if(d.month <1){

d.month = 12

d.year--

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

}

}

}

return d

}

//如果有两个日期值,计算他们相距的天数。

public int dateDiff(MyDate d1, MyDate d2) throws Exception {

MyDate date1 = new MyDate(d1.year, d1.month, d1.day)

MyDate date2 = new MyDate(d2.year, d2.month, d2.day)

int i

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

for(i=1i<date1.monthi++){

date1.day += date1.days[i-1]

}

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

for(i=1i<date2.monthi++){

date2.day += date2.days[i-1]

}

if(date1.year <date2.year){

for(i=date1.yeari<date2.yeari++){

date2.day += isLeapYear(i) ? 366 : 365

}

}

else if(date1.year >date2.year){

for(i=date2.yeari<date1.yeari++){

date1.day += isLeapYear(i) ? 366 : 365

}

}

return date2.day - date1.day

}

public boolean isLeapYear(int year){

return ((year%400==0) || (year%4==0 &&year%100!=0)) ? true : false

}

public String toString(){

StringBuffer buff = new StringBuffer()

if(year <10){

buff.append("000" + year)

}

else if(year <100){

buff.append("00" + year)

}

else if(year <1000){

buff.append("0" + year)

}

else{

buff.append(year)

}

if(month <10){

buff.append("-0" + month)

}

else{

buff.append("-" + month)

}

if(day <10){

buff.append("-0" + day)

}

else{

buff.append("-" + day)

}

return buff.toString()

}

}

运行测试:

请输入一个日期

年:2011

月:2

日:29

非法日期

请输入一个日期

年:2011

月:2

日:27

时间间隔:

2

2011-02-27 在2天后就是 2011-03-01

2009-02-27 ~ 2011-03-01 相隔 732 天

//Color类

public class Color {

private String colorName

final public void setColor(String color){

this.colorName = color

}

public String getColor(){

return this.colorName

}

}

//White类

public class White extends Color{

public White(){

this.setColor("white")

}

public String getColor() {

return super.getColor()

}

}

//Red类

public class Red extends White{

public Red(){

this.setColor("Red")

}

}

//Prism类

public class Prism {

static public void activePrism(Color c){

if(c.getColor().equals("white")){

Red r = new Red()

Blue b = new Blue()

System.out.println(r.getColor())

System.out.println(b.getColor())

}

else{

return

}

}

}

//测试类

public class ColorTest {

public static void main(String[] args) {

White w = new White()

Prism.activePrism(w)

}

}

其他颜色自己写吧。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11587254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存