关于Java的一个小程序,懂得来帮个忙

这是我编过的程序

它用来计算两个日期之间间隔

某日期向前/后几天是什么日期(考虑闰年)

星期几不好算,肯定要找个基准点

import java.awt.*;

import java.awt.event.*;

public class dakiler

{

public static void main(String args[])

{

new mainpage();

}

}

class mainpage extends Frame implements ActionListener

{

private Button button2,button3,button4;

forward frame1;

backward frame2;

twodates frame3;

mainpage()

{

super("主选择页面");

this.setLayout(new FlowLayout());

this.setLocation(250,250);

button2=new Button("日期向后计算");

button3=new Button("日期向前计算");

button4=new Button("两个日期计算");

button2.addActionListener(this);

button3.addActionListener(this);

button4.addActionListener(this);

this.add(button2);

this.add(button3);

this.add(button4);

this.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

}

);

this.pack();

this.show();

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource()==button2)

{

this.setLocation(0,0);

forward frame1=new forward();

}

if(e.getSource()==button3)

{

this.setLocation(0,0);

backward frame2=new backward();

}

if(e.getSource()==button4)

{

this.setLocation(0,0);

twodates frame3=new twodates();

}

this.pack();

}

}

*/

class mainpage extends Frame implements ItemListener

{

private Choice choice;

private Label label1;

forward frame1;

backward frame2;

twodates frame3;

mainpage () {

this.setLayout(null);

this.setBounds(250,250,150,90);

choice=new Choice();

label1=new Label("请选择");

choice.addItem("日期向后计算");

choice.addItem("日期向前计算");

choice.addItem("两个日期计算");

choice.addItemListener(this);

label1.setBounds(20,30,100,20);

choice.setBounds(20,50,100,20);

this.add(label1);

this.add(choice);

this.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

}

);

this.show();

}

public void itemStateChanged(ItemEvent e)

{

if(choice.getSelectedItem().equals("日期向后计算"))

{

this.setLocation(0,0);

if (frame1!=null) frame1.dispose();

if (frame2!=null) frame2.dispose();

if (frame3!=null) frame3.dispose();

frame1=new forward();

}

if(choice.getSelectedItem().equals("日期向前计算"))

{

this.setLocation(0,0);

if (frame1!=null) frame1.dispose();

if (frame2!=null) frame2.dispose();

if (frame3!=null) frame3.dispose();

frame2=new backward();

}

if(choice.getSelectedItem().equals("两个日期计算"))

{

this.setLocation(0,0);

if (frame1!=null) frame1.dispose();

if (frame2!=null) frame2.dispose();

if (frame3!=null) frame3.dispose();

frame3=new twodates();

}

}

}

class forward extends Frame implements ActionListener

{

private Button button5,button6;

private TextField yeartextfield,monthtextfield,daytextfield,timetextfield,answertextfield;

private Label yearlabel,monthlabel,daylabel,timelabel,answerlabel;

private double year,month,day,time;

private boolean isren,iscontinue;

forward()

{

super("日期向后计算");

this.setLayout(null);

this.setBounds(0,250,800,150);

this.setResizable(false);

button5=new Button("确定");

button6=new Button("清除");

yearlabel=new Label("请输入年份");

monthlabel=new Label("请输入月份");

daylabel=new Label("请输入日期");

timelabel=new Label("请输入向后几天");

answerlabel=new Label("答案是");

yeartextfield=new TextField(5);

monthtextfield=new TextField(5);

daytextfield=new TextField(5);

timetextfield=new TextField(5);

answertextfield=new TextField(20);

button5.addActionListener(this);

button6.addActionListener(this);

yeartextfield.addActionListener(this);

monthtextfield.addActionListener(this);

daytextfield.addActionListener(this);

timetextfield.addActionListener(this);

yearlabel.setBounds(0,50,100,20);

yeartextfield.setBounds(100,50,100,20);

monthlabel.setBounds(0,80,100,20);

monthtextfield.setBounds(100,80,100,20);

daylabel.setBounds(0,110,100,20);

daytextfield.setBounds(100,110,100,20);

timelabel.setBounds(200,80,100,20);

timetextfield.setBounds(300,80,100,20);

button5.setBounds(400,80,100,20);

button6.setBounds(500,80,100,20);

answerlabel.setBounds(600,80,100,20);

answertextfield.setBounds(700,80,100,20);

this.add(yearlabel);

this.add(yeartextfield);

this.add(monthlabel);

this.add(monthtextfield);

this.add(daylabel);

this.add(daytextfield);

this.add(timelabel);

this.add(timetextfield);

this.add(button5);

this.add(button6);

this.add(answerlabel);

this.add(answertextfield);

this.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

dispose();

}

}

);

this.show();

}

public void actionPerformed(ActionEvent e)

{

if (e.getSource()==button6)

{

yeartextfield.setText("");

monthtextfield.setText("");

daytextfield.setText("");

timetextfield.setText("");

answertextfield.setText("");

}

else if((e.getSource()==button5)||(e.getSource()==yeartextfield)||(e.getSource()==monthtextfield)||(e.getSource()==daytextfield)||(e.getSource()==timetextfield))

{

try

{

year=Double.parseDouble(yeartextfield.getText());

month=Double.parseDouble(monthtextfield.getText());

day=Double.parseDouble(daytextfield.getText());

time=Double.parseDouble(timetextfield.getText());

}

catch (Exception exc)

{

iscontinue=false;

answertextfield.setText("输入不正确");

}

function func=new function();

isren=func.ren(year);

iscontinue=false;

iscontinue=func.conti(month,day,isren);

if(iscontinue)

{

String str=func.plus(year,month,day,time);

answertextfield.setText(str);

}

else

{ answertextfield.setText("输入不正确");

}

}

}

}

class backward extends Frame implements ActionListener

{

private Button button5,button6;

private TextField yeartextfield,monthtextfield,daytextfield,timetextfield,answertextfield;

private Label yearlabel,monthlabel,daylabel,timelabel,answerlabel;

private double year,month,day,time;

private boolean isren,iscontinue;

backward()

{

super("日期向前计算");

this.setLayout(null);

this.setBounds(0,250,800,150);

this.setResizable(false);

button5=new Button("确定");

button6=new Button("清除");

yearlabel=new Label("请输入年份");

monthlabel=new Label("请输入月份");

daylabel=new Label("请输入日期");

timelabel=new Label("请输入向前几天");

answerlabel=new Label("答案是");

yeartextfield=new TextField(5);

monthtextfield=new TextField(5);

daytextfield=new TextField(5);

timetextfield=new TextField(5);

answertextfield=new TextField(20);

button5.addActionListener(this);

button6.addActionListener(this);

yeartextfield.addActionListener(this);

monthtextfield.addActionListener(this);

daytextfield.addActionListener(this);

timetextfield.addActionListener(this);

yearlabel.setBounds(0,50,100,20);

yeartextfield.setBounds(100,50,100,20);

monthlabel.setBounds(0,80,100,20);

monthtextfield.setBounds(100,80,100,20);

daylabel.setBounds(0,110,100,20);

daytextfield.setBounds(100,110,100,20);

timelabel.setBounds(200,80,100,20);

timetextfield.setBounds(300,80,100,20);

button5.setBounds(400,80,100,20);

button6.setBounds(500,80,100,20);

answerlabel.setBounds(600,80,100,20);

answertextfield.setBounds(700,80,100,20);

this.add(yearlabel);

this.add(yeartextfield);

this.add(monthlabel);

this.add(monthtextfield);

this.add(daylabel);

this.add(daytextfield);

this.add(timelabel);

this.add(timetextfield);

this.add(button5);

this.add(button6);

this.add(answerlabel);

this.add(answertextfield);

this.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

dispose();

}

}

);

this.show();

}

public void actionPerformed(ActionEvent e)

{

if (e.getSource()==button6)

{

yeartextfield.setText("");

monthtextfield.setText("");

daytextfield.setText("");

timetextfield.setText("");

answertextfield.setText("");

}

else if((e.getSource()==button5)||(e.getSource()==yeartextfield)||(e.getSource()==monthtextfield)||(e.getSource()==daytextfield)||(e.getSource()==timetextfield))

{

try

{

year=Double.parseDouble(yeartextfield.getText());

month=Double.parseDouble(monthtextfield.getText());

day=Double.parseDouble(daytextfield.getText());

time=Double.parseDouble(timetextfield.getText());

}

catch (Exception exc)

{

iscontinue=false;

answertextfield.setText("输入不正确");

}

function func=new function();

isren=func.ren(year);

iscontinue=false;

iscontinue=func.conti(month,day,isren);

if(iscontinue)

{

String str=func.minus(year,month,day,time);

answertextfield.setText(str);

}

else

{ answertextfield.setText("输入不正确");

}

}

}

}

class twodates extends Frame implements ActionListener

{

private Button button5,button6;

private TextField yeartextfield1,monthtextfield1,daytextfield1,answertextfield,yeartextfield2,monthtextfield2,daytextfield2;

private Label yearlabel1,monthlabel1,daylabel1,yearlabel2,monthlabel2,daylabel2,answerlabel;

private double year1,month1,day1,year2,month2,day2;

private boolean isren1,isren2,iscontinue;

private int days;

public twodates()

{

super("两个日期计算");

this.setLayout(null);

this.setBounds(0,250,100,800);

this.setSize(800,150);

this.setResizable(false);

button5=new Button("确定");

button6=new Button("清除");

yearlabel1=new Label("请输入第一个年份");

monthlabel1=new Label("请输入第一个月份");

daylabel1=new Label("请输入第一个日期");

yearlabel2=new Label("请输入第二个年份");

monthlabel2=new Label("请输入第二个月份");

daylabel2=new Label("请输入第二个日期");

answerlabel=new Label("答案是");

yeartextfield1=new TextField(5);

monthtextfield1=new TextField(5);

daytextfield1=new TextField(5);

yeartextfield2=new TextField(5);

monthtextfield2=new TextField(5);

daytextfield2=new TextField(5);

answertextfield=new TextField(20);

button5.addActionListener(this);

button6.addActionListener(this);

yeartextfield1.addActionListener(this);

monthtextfield1.addActionListener(this);

daytextfield1.addActionListener(this);

yeartextfield2.addActionListener(this);

monthtextfield2.addActionListener(this);

daytextfield2.addActionListener(this);

yearlabel1.setBounds(0,50,100,20);

yeartextfield1.setBounds(100,50,100,20);

monthlabel1.setBounds(0,80,100,20);

monthtextfield1.setBounds(100,80,100,20);

daylabel1.setBounds(0,110,100,20);

daytextfield1.setBounds(100,110,100,20);

yearlabel2.setBounds(200,50,100,20);

yeartextfield2.setBounds(300,50,100,20);

monthlabel2.setBounds(200,80,100,20);

monthtextfield2.setBounds(300,80,100,20);

daylabel2.setBounds(200,110,100,20);

daytextfield2.setBounds(300,110,100,20);

button5.setBounds(400,80,100,20);

button6.setBounds(500,80,100,20);

answerlabel.setBounds(600,80,100,20);

answertextfield.setBounds(700,80,100,20);

this.add(yearlabel1);

this.add(yeartextfield1);

this.add(monthlabel1);

this.add(monthtextfield1);

this.add(daylabel1);

this.add(daytextfield1);

this.add(yearlabel2);

this.add(yeartextfield2);

this.add(monthlabel2);

this.add(monthtextfield2);

this.add(daylabel2);

this.add(daytextfield2);

this.add(button5);

this.add(button6);

this.add(answerlabel);

this.add(answertextfield);

this.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

dispose();

}

}

);

this.show();

}

public void actionPerformed(ActionEvent e)

{

if (e.getSource()==button6)

{

this.setSize(800,150);

yeartextfield1.setText("");

monthtextfield1.setText("");

daytextfield1.setText("");

yeartextfield2.setText("");

monthtextfield2.setText("");

daytextfield2.setText("");

answertextfield.setText("");

}

else if((e.getSource()==button5)||(e.getSource()==yeartextfield1)||(e.getSource()==monthtextfield1)||(e.getSource()==daytextfield1)||(e.getSource()==yeartextfield2)||(e.getSource()==monthtextfield2)||(e.getSource()==daytextfield2))

{

this.setSize(800,150);

try

{

year1=Double.parseDouble(yeartextfield1.getText());

month1=Double.parseDouble(monthtextfield1.getText());

day1=Double.parseDouble(daytextfield1.getText());

year2=Double.parseDouble(yeartextfield2.getText());

month2=Double.parseDouble(monthtextfield2.getText());

day2=Double.parseDouble(daytextfield2.getText());

}

catch (Exception exc)

{

iscontinue=false;

answertextfield.setText("输入不正确");

}

function func=new function();

isren1=func.ren(year1);

isren2=func.ren(year2);

iscontinue=false;

iscontinue=(func.conti(month1,day1,isren1))&&(func.conti(month2,day2,isren2));

if(iscontinue)

{

days=func.between(year1,month1,day1,year2,month2,day2);

answertextfield.setText("差"+days+"天");

}

else

{ answertextfield.setText("输入不正确");

}

}

}

}

class function

{

private String str;

private int year1,month1,day1,time1;

private int days=0;

private double temp;

public boolean ren(double year)

{

if(((year%4==0)&&(year%100!=0))||(year%400==0))

return true;

else return false;

}

public boolean conti(double month,double day,boolean isren)

{

boolean boo=true;

if((month<=0)||(month>12))

{ boo=false;}

else

{

switch ((int)month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12: if ((day>31)||(day<=0)) boo=false;

else boo=true;

break;

case 4:

case 6:

case 9:

case 11: if ((day>30)||(day<=0)) boo=false;

else boo=true;

break;

case 2: if (isren)

{

if ((day>29)||(day<=0)) boo=false;

else boo=true;

}

else

{

if ((day>28)||(day<=0)) boo=false;

else boo=true;

}

break;

}

}

return boo;

}

public String plus(double year,double month,double day,double time)

{

year1=(int)year;

month1=(int)month;

day1=(int)day;

time1=(int)time;

for (int i=1;i<=time1;i++)

{

if ((month1==12)&&(day1==31))

{

year1++;

month1=1;

day1=1;

}

else if (((month1==1)||(month1==3)||(month1==5)||(month1==7)||(month1==8)||(month1==10))&&(day1==31))

{

month1++;

day1=1;

}

else if(((month1==4)||(month1==6)||(month1==9)||(month1==11))&&(day1==30))

{