zoukankan      html  css  js  c++  java
  • 一个简单的java年龄计算器

    制作一个如下图年龄计算器

    根据题目,我做了一个由Calendar类以及年月日各相减得到的年龄,当然正确的方法不止一个,以下为我的源代码和结果截图:

    package com.Date;

    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Calendar;
    import java.util.StringTokenizer;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;

    public class AgeCounts extends JFrame implements ActionListener {
    JTextField text1, text2;
    public static String str = "";

    public static void main(String[] args) {
    new AgeCounts();
    }

    public AgeCounts() {
    JFrame mywindow = new JFrame();
    mywindow.setTitle("年龄计算1.0版");
    mywindow.setSize(400, 70);
    mywindow.setLocation(350, 300);
    mywindow.setResizable(false);
    mywindow.setLayout(new FlowLayout());
    JLabel lab = new JLabel("生日 :");
    mywindow.add(lab);
    text1 = new JTextField("", 10);
    text2 = new JTextField("", 10);
    mywindow.add(text1);
    JButton btn = new JButton("计算");
    mywindow.add(btn);
    btn.addActionListener(this);
    mywindow.add(text2);
    text2.setEditable(false);
    mywindow.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
    boolean f = true;
    str = text1.getText();
    StringTokenizer st = new StringTokenizer(str, " ");
    int myYear, myMonth, myDay;
    try {
    myYear = Integer.parseInt(st.nextToken());
    myMonth = Integer.parseInt(st.nextToken());
    myDay = Integer.parseInt(st.nextToken());
    if (myMonth > 12 || myMonth < 1) {
    f = false;
    text2.setText("日期错误");
    }
    if (myDay > 31 || myDay < 1) {
    f = false;
    text2.setText("日期错误");
    }
    if (myYear < 0) {
    f = false;
    text2.setText("日期错误");
    }
    if (f) {
    getAge(myYear, myMonth, myDay);
    }

    } catch (Exception e1) {
    text2.setText("日期格式错误");
    }

    }

    // 年龄计算函数
    public void getAge(int year, int month, int day) {
    boolean b = true;
    Calendar cal = Calendar.getInstance();
    int yearNow = cal.get(Calendar.YEAR);
    int monthNow = cal.get(Calendar.MONTH) + 1;
    int dayNow = cal.get(Calendar.DAY_OF_MONTH);
    int years, months = 0, days = 0;
    if (dayNow < day) {
    dayNow = dayNow + 30;
    monthNow = monthNow - 1;
    }
    if (monthNow < month) {
    monthNow = monthNow + 12;
    yearNow = yearNow - 1;
    }
    if (yearNow < year) {
    b = false;
    text2.setText("你还没有出生哟");
    }
    if (b) {
    years = yearNow - year;
    months = monthNow - month;
    days = dayNow - day;
    String result = years + "岁零" + months + "个月" + days + "天";
    text2.setText(result);
    }
    }

    }

    ----------------------------------------------------

    结果截图:

  • 相关阅读:
    如何将u盘、移动硬盘转化为活动分区--绝招
    jstl错误排除:According to TLD or attribute directive in tag file, attribute value does not accept any expressions
    eclipse中package explore和project explore 怎么相互切换???
    硬盘知识区
    Sublime Text 3下Emmet使用技巧
    sublime text3中设置Emmet输入标签自动闭合
    window如何分区
    HTTP缓存
    react-router 4实现代码分割(code spliting)
    Vue练手项目(包含typescript版本)
  • 原文地址:https://www.cnblogs.com/wangxiuheng/p/4438159.html
Copyright © 2011-2022 走看看