中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。使用javaGUI实现代码如下:

2 篇文章 0 订阅
1 篇文章 0 订阅

中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。使用javaGUI实现代码如下:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class test extends JFrame implements ActionListener {

    //定义组件
    JButton jb1 = null;

    JPanel jp1, jp2, jp3, jp4 = null;
    JTextField jtf ,jtf2 ,jtf3 ,jtf4= null;
    JLabel jlb1, jlb2, jlb3 ,jlb4= null;


    ButtonGroup bg = null;

    public static void main(String[] args) {

        test mUI = new test();
    }

    public test() {
        //创建组件
        jb1 = new JButton("计算");


        //设置监听
        jb1.addActionListener(this);


        bg = new ButtonGroup();


        jp1 = new JPanel();
        jp2 = new JPanel();
        jp3 = new JPanel();
        jp4 = new JPanel();


        jlb1 = new JLabel("年:");
        jlb2 = new JLabel("月:");
        jlb3 = new JLabel("日:");
      jlb4 = new JLabel("答案:");


        jtf = new JTextField(10);
        jtf2= new JTextField(10);
        jtf3 = new JTextField(10);
       jtf4 = new JTextField(8);
        //加入到JPanel中
        jp1.add(jlb1);
        jp1.add(jtf);

        jp2.add(jlb2);
        jp2.add(jtf2);

        jp3.add(jlb3);      //添加标签
        jp3.add(jtf3);


        jp4.add(jb1);//添加按钮
       jp4.add(jlb4);
        jp4.add(jtf4);



        //加入JFrame中
        this.add(jp1);
        this.add(jp2);
        this.add(jp3);
        this.add(jp4);


        this.setLayout(new GridLayout(4, 1));            //选择GridLayout布局管理器
        this.setTitle("从2000年1月一日开始,渔夫是在打鱼,还是在晒网?");
        this.setSize(500, 200);
        this.setLocation(400, 200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    //设置当关闭窗口时,保证JVM也退出
        this.setVisible(true);
        this.setResizable(true);

    }

    @Override
    public void actionPerformed(ActionEvent e) {

        String nian=jtf.getText();

        String yue=jtf2.getText();
        String ri = jtf3.getText();
        if(yue.length()==1){
            yue="0"+yue;
        }
        if(ri.length()==1){
            ri="0"+ri;
        }

        String riqi=nian+"/"+yue+"/"+ri;
        System.out.println(riqi);

        if(!panduan(riqi)){
            jtf4.setText("请输入正确日期");
            return;
        }

        int text = Integer.parseInt(nian);
        int text1 = Integer.parseInt(yue);
        int text2 = Integer.parseInt(ri);
        String zzz=judge(getAllDays(text, text1, text2));
        jtf4.setText(zzz);


    }
    public boolean panduan(String riqi){
        boolean a=true;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
        simpleDateFormat.setLenient(false);
        try {
            Date parse = simpleDateFormat.parse(riqi);
        } catch (ParseException e1) {
            e1.printStackTrace();
            a=false;
        }
        return  a;
    }
    public  String judge(int days) {
        int x = days % 5;
        String y=null;
        if (x >= 1 && x <= 3) {
           y="在打鱼!";
        } else if (x == 4 || x == 0) {
            y="在晒网!";
        }
        return y;
    }
    public  boolean runNian(int year) {
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            return true;
        }
        return false;
    }

    // 计算距离输入日期多少天
    public  int getAllDays(int year, int month, int day) {
        int sum = 0;
        // 计算2010--(year-1)之间有多少天
        for (int i = 2010; i < year; i++) {
            if (runNian(i)) {
                sum += 366;
            } else {
                sum += 365;
            }
        }

        // 计算year内多少天
        sum += getBeforeDays(year, month, day);
        return sum;
    }

    // 判断每月有几天
    public  int getDays(int year, int month) {
        int days = 0;
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                days = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                days = 30;
                break;
            case 2:
                if (runNian(year)) {
                    days = 29;
                } else {
                    days = 28;
                }
                break;
        }

        return days;
    }

    // 计算本年内该日期之前共有多少天
    public  int getBeforeDays(int year, int month, int day) {
        int sum = 0;
        for (int i = 1; i < month; i++) {
            sum += getDays(year, i);
        }
        return sum + day;
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值