刚刚将C语言版本的日历问题改成了java版,加了GUI界面,赶脚特别开森,希望明天可以再接再厉,艳歌儿加油哟~~~虽然最近身体不太舒服,但是,人还挺有斗志的……真心希望身体能尽快有所好转,先把那道题目贴上来:
问题描述
在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。例如:1700, 1800, 1900 和 2100 不是闰年,而 1600, 2000 和 2400是闰年。 给定从公元2000年1月1日开始逝去的天数,你的任务是给出这一天是哪年哪月哪日星期几。
输入数据
输入包含若干行,每行包含一个正整数,表示从2000年1月1日开始逝去的天数。输入最后一行是−1, 不必处理。可以假设结果的年份不会超过9999。
输出要求
对每个测试样例,输出一行,该行包含对应的日期和星期几。格式为“YYYY-MM-DD DayOfWeek”, 其中 “DayOfWeek” 必须是下面中的一个: "Sunday", "Monday","Tuesday", "Wednesday", "Thursday","Friday" and "Saturday“。
输入样例
1730
1740
1750
1751
-1
输出样例
2004-09-26 Sunday
2004-10-06 Wednesday
2004-10-16 Saturday
2004-10-17 Sunday
接下来是我的代码运行结果:
下面附上我的代码:
public class Calendar extends JFrame {
MyListener l;
public static void main(String[] args) {
Calendar c=new Calendar();
c.GUI();
}
public void GUI(){
this.setTitle("日 历 问 题");
this.setSize(650, 600);
this.setLocation(300, 20);
this.setLayout(new BorderLayout());
ImageIcon im=new ImageIcon(this.getClass().getResource("1.jpg"));
this.setIconImage(im.getImage());
//创建北边区域
JLabel jln=new JLabel("日 历 问 题",JLabel.CENTER);
jln.setFont(new Font("楷体", 1, 35));
jln.setOpaque(true);
jln.setPreferredSize(new Dimension(650,100));
jln.setBackground(Color.white);
this.add(jln,BorderLayout.NORTH);
//创建西边区域
JPanel jpw=new JPanel();
jpw.setLayout(null);
jpw.setPreferredSize(new Dimension(350,300));
JLabel jlw=new JLabel("请输入自2000年01月01日逝去的天数:",JLabel.CENTER);
jlw.setBounds(10, 15,340, 40);
jlw.setFont(new Font("楷体", 2, 18));
jpw.add(jlw);
JTextField jt1=new JTextField();
jt1.setPreferredSize(new Dimension(200,20));
jt1.setBounds(42, 70,250,35);
JTextField jt2=new JTextField();
jt2.setPreferredSize(new Dimension(200,20));
jt2.setBounds(42, 125,250,35);
JTextField jt3=new JTextField();
jt3.setPreferredSize(new Dimension(200,20));
jt3.setBounds(42, 180,250,35);
JTextField jt4=new JTextField();
jt4.setPreferredSize(new Dimension(200,20));
jt4.setBounds(42, 235,250,35);
JTextField jt5=new JTextField();
jt5.setPreferredSize(new Dimension(200,20));
jt5.setBounds(42, 290,250,35);
jpw.add(jt1);
jpw.add(jt2);
jpw.add(jt3);
jpw.add(jt4);
jpw.add(jt5);
JButton jbw=new JButton("点击查询");
jbw.setFont(new Font("楷体", 1, 20));
jbw.setPreferredSize(new Dimension(130,40));
jbw.setBounds(140, 360, 130, 40);
jpw.add(jbw);
this.add(jpw,BorderLayout.WEST);
//创建东边区域
JPanel jpe=new JPanel();
jpe.setLayout(null);
jpe.setPreferredSize(new Dimension(350,300));
JLabel jle=new JLabel("该天数所对应的日期为:",JLabel.CENTER);
jle.setBounds(10, 15,340, 40);
jle.setFont(new Font("楷体", 2, 18));
jpe.add(jle);
JLabel jb1=new JLabel("");
jb1.setPreferredSize(new Dimension(200,20));
jb1.setBounds(90, 70,250,35);
jb1.setFont(new Font("楷体", 2, 20));
JLabel jb2=new JLabel("");
jb2.setPreferredSize(new Dimension(200,20));
jb2.setBounds(90, 125,250,35);
jb2.setFont(new Font("楷体", 2, 20));
JLabel jb3=new JLabel("");
jb3.setPreferredSize(new Dimension(200,20));
jb3.setBounds(90, 180,250,35);
jb3.setFont(new Font("楷体", 2, 20));
JLabel jb4=new JLabel("");
jb4.setPreferredSize(new Dimension(200,20));
jb4.setBounds(90, 235,250,35);
jb4.setFont(new Font("楷体", 2, 20));
JLabel jb5=new JLabel("");
jb5.setPreferredSize(new Dimension(200,20));
jb5.setBounds(90, 290,250,35);
jb5.setFont(new Font("楷体", 2, 20));
jpe.add(jb1);
jpe.add(jb2);
jpe.add(jb3);
jpe.add(jb4);
jpe.add(jb5);
JButton jbe=new JButton("再次输入");
jbe.setFont(new Font("楷体", 1, 20));
jbe.setPreferredSize(new Dimension(130,40));
jbe.setBounds(80, 360, 130, 40);
jbe.addActionListener(l);
jpe.add(jbe);
this.add(jpe,BorderLayout.EAST);
l=new MyListener(jt1,jt2,jt3,jt4,jt5,jb1,jb2,jb3,jb4,jb5);
jbw.addActionListener(l);
jbe.addActionListener(l);
this.setVisible(true);
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class MyListener implements ActionListener,KeyListener{
int flag=0;
JTextField jt1,jt2,jt3,jt4,jt5;
JLabel[] jbArr;
JTextField[] jtArr;
public MyListener(JTextField jt1,JTextField jt2,JTextField jt3,JTextField jt4,JTextField jt5,JLabel jb1,JLabel jb2,JLabel jb3,JLabel jb4,JLabel jb5){
jtArr = new JTextField[]{jt1,jt2,jt3,jt4,jt5};
jbArr=new JLabel[]{jb1,jb2,jb3,jb4,jb5};
}
@Override
public void actionPerformed(ActionEvent e) {
int k;
if(e.getActionCommand().equals("点击查询")||flag==1){
for(int i=0;i<5;i++){
if(jtArr[i].getText()==""){
jbArr[i].setText("");
}
if(jtArr[i].getText()!=""){
k=Integer.parseInt(jtArr[i].getText());
jbArr[i].setText(caculate(k));
}
}
}
if(e.getActionCommand().equals("再次输入")){
for(int i=0;i<5;i++){
jbArr[i].setText("");
jtArr[i].setText("");
}
}
}
public String caculate(int days){
int year=2000,month=1,day=1,l=6;
String week[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
for(int i=1;i<=days;i++)
{
if((year%100!=0&&year%4==0)||year%400==0){//判断是否是闰年
if(i%366==0){
year++;
month=1;
day=0;
i=i-366;
days=days-366;
}//若刚好是整整的那闰年,就扣366天
}else if(i%365==0){
year++;
month=1;
day=1;
i=i-365;
days=days-365;
} //若是平年,就扣去365天
if((year%100!=0&&year%4==0)||year%400==0){
if(i==31){
month++;
day=0;
}
if(i==60){
month++;
day=0;
}
if(i==91){
month++;
day=0;
}
if(i==121){
month++;
day=0;
}
if(i==152){
month++;
day=0;
}
if(i==182){
month++;
day=0;
}
if(i==213){
month++;
day=0;
}
if(i==244){
month++;
day=0;
}
if(i==274){
month++;
day=0;
}
if(i==305){
month++;
day=0;
}
if(i==335){
month++;
day=0;
}
}else{
if(i==31){
month++;
day=0;
}
if(i==59){
month++;
day=0;
}
if(i==90){
month++;
day=0;
}
if(i==120){
month++;
day=1;
}
if(i==151){
month++;
day=0;
}
if(i==181){
month++;
day=0;
}
if(i==212){
month++;
day=0;
}
if(i==243){
month++;
day=0;
}
if(i==273){
month++;
day=0;
}
if(i==304){
month++;
day=0;
}
if(i==334){
month++;
day=0;
}
}
day++;
l++;
if(l==7){
l=0;
}
}
if(month<10&&day<10){
System.out.println(year+"-0"+month+"-0"+day+" "+week[l]);
return year+"-0"+month+"-0"+day+" "+week[l];
}
else if(month<10){
System.out.println(year+"-0"+month+day+" "+week[l]);
return year+"-0"+month+"-"+day+" "+week[l];
}
else if(day<10){
System.out.println(year+month+"-0"+day+" "+week[l]);
return year+"-"+month+"-0"+day+" "+week[l];
}else{
System.out.println(year+month+day+" "+week[l]);
return year+"-"+month+"-"+day+" "+week[l];
}
}
}
恩恩,因为本身没有什么太难的地方,就不做详细的解释说明啦……
很晚啦,早点休息咯,明天加油哈……