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.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)
}
}
其他颜色自己写吧。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)