1、日期的封装
public class MyDate{
int year,month,day;
private static int thisYear;
static {
thisYear=2008;
}
public MyDate(int year,int month,int day){
this.set(year,month,day);
}
public MyDate(){
this.set(1,1,1);
}
public MyDate(MyDate d){
this.set(d);
}
public void set(MyDate d){
this.set(d.year,d.month,d.day);
}
public void set(int year,int month,int day){
this.year=year;
this.month=(month>=1)&&(month<=12) ? month : 1;
this.day=(day>=1)&&(day<=31) ? day : 1;
}
public int getYear(){
return this.year;
}
public int getMonth(){
return this.month;
}
public int getDay(){
return this.day;
}
public static int getThisYear(){
return thisYear;
}
public String toString(){
return this.year+" 年 "+this.month+" 月 "+this.day+" 日 ";
}
public static boolean isLeapYear(int year){
return year%400==0||year%100!=0&&year%4==0;
}
public boolean isLeapYear(){
return this.isLeapYear(this.year);
}
public static int daysofMonth(int year,int month){
switch(month){
case 1:case 3:case 5:case 7:case 8:case 10:case 12: return 31;
case 4:case 6:case 9:case 11:return 30;
case 2: return MyDate.isLeapYear(year) ? 29:28;
default:return 0;
}
}
public int daysofMonth(){
return this.daysofMonth(this.year,this.month);
}
public void tomorrow(){
this.day++;
if(this.day>this.daysofMonth()){
this.day=1;
this.month++;
if(this.month>12){
this.month=1;
this.year++;
}
}
}
public MyDate yestoday(){
MyDate date=new MyDate(this);
date.day--;
if(date.day==0){
date.month--;
if(date.month==0){
date.month=12;
date.year--;
}
date.day=this.daysofMonth(date.year,date.month);
}
return date;
}
}
class MyDate_ex{
public static void main(String[] args){
System.out.println("today is "+MyDate.getThisYear()+" ,leap ? "+MyDate.isLeapYear(MyDate.getThisYear()));
MyDate d=new MyDate(2015,3,1);
int sum=0;
for(int i=1;i<d.month;i++){
sum+=d.daysofMonth(d.year,i);
}
sum+=d.day;
System.out.println(d+" is this year "+sum+" days ");
}
}
2、编程例题
写一个复数类(类名为:Complex),包含:①两个protected整型属性,分别代表:实数部分、虚数部分;②两个构造方法:一个带两个参数,一个不带参数;③两个方法:求实数加法的complexAdd(Complex a)方法,能把当前复数对象的实部、虚部组合成a+bi的字符串形式的String toString( )方法;④在main( )方法中对该复数类进行如下功能验证:调用complexAdd( )方法把1+2i 和3+4i 相加产生一个新的复数4+6i,调用toString( )方法把新复数转换成字符串“4+6i”,然后用System.out.println( )方法输出该字符串。
public class Complex{
protected int real;
protected int imag;
public Complex(int real, int imag){
this.real = real;
this.imag = imag;
}
public Complex(){
}
public void merge(Complex a){
this.real = this.real + a.real;
this.imag = this.imag + a.imag;
}
public Complex complexAdd(Complex a){
Complex c = new Complex();
c.real = this.real + a.real;
c.imag = this.imag + a.imag;
return c;
}
public String toString(){
return real + "+" + imag + "i";
}
public static void main(String args[]){
Complex a = new Complex(1,2);
Complex b = new Complex(3,4);
a.merge(b);
System.out.println( "merge:"+ a.toString() );
System.out.println( "complex:"+ a.complexAdd(b).toString() );
}
}