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

根据题目,我做了一个由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);
}
}

}

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

结果截图:

一个简单的java年龄计算器的更多相关文章

  1. 一个简单的Java web服务器实现

    前言 一个简单的Java web服务器实现,比较简单,基于java.net.Socket和java.net.ServerSocket实现: 程序执行步骤 创建一个ServerSocket对象: 调用S ...

  2. Java学习笔记 11/15:一个简单的JAVA例子

    首先来看一个简单的 Java 程序. 来看下面这个程序,试试看是否看得出它是在做哪些事情! 范例:TestJava.java   // TestJava.java,java 的简单范例  public ...

  3. Java入门篇(一)——如何编写一个简单的Java程序

    最近准备花费很长一段时间写一些关于Java的从入门到进阶再到项目开发的教程,希望对初学Java的朋友们有所帮助,更快的融入Java的学习之中. 主要内容包括JavaSE.JavaEE的基础知识以及如何 ...

  4. Ant—使用Ant构建一个简单的Java工程(两)

    博客<Ant-使用Ant构建一个简单的Java项目(一)>演示了使用Ant工具构建简单的Java项目,接着这个样例来进一步学习Ant: 上面样例须要运行多条ant命令才干运行Test类中的 ...

  5. IntelliJ IDEA创建一个简单的Java Project(二)

    1.  选择要创建的项目类型,同时配置本地的JDK 2. 是否使用模板创建项目 3. 选择项目在本地的存储位置 4. 点击Finish,完成一个简单的Java工程的创建.

  6. 利用 Docker 构建一个简单的 java 开发编译环境

    目前 Java 语言的版本很多,除了常用的 Java 8,有一些遗留项目可能使用了 Java 7,也可能有一些比较新的的项目使用了 Java 10 以上的版本.如果想切换自己本地的 Java 开发环境 ...

  7. 【Java】一个简单的Java应用程序

    简单记录,Java 核心技术卷I 基础知识(原书第10 版) 一个简单的Java应用程序"Hello, World!" Hello, World! Goodbye,World! 一 ...

  8. 一个简单的Java应用程序

    目录 一个简单的Java应用程序 首次运行结果 程序示例 运行结果 修改大小写之后的运行结果 程序示例 运行结果 关键字public 关键字class 类名及其命名规则 类名必须以字母开头 不能使用J ...

  9. Linux环境下部署完JDK后运行一个简单的Java程序

    前言 前一篇文章详细讲解了如何在Windows环境下安装虚拟机+Linux系统,并且成功部署了JDK. 不过部署完JDK之后,我们判断部署是否成功的依据是看"java -version&qu ...

随机推荐

  1. 使用Hibernate防止SQL注入的方法

    之前写代码,往后台传入一个组织好的String类型的Hql或者Sql语句,去执行. 这样其实是很蠢的一种做法!!!! 举个栗子~~ 我们模仿一下用户登录的场景: 常见的做法是将前台获取到的用户名和密码 ...

  2. HDU 5783Divide the Sequence

    Divide the Sequence Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  3. python-----利用filecmp删除重复文件

    以下代码素材自取:链接:https://pan.baidu.com/s/1fL17RjKyGjpvpeeUFONCaQ  提取码:zgiw # coding:utf-8 import os impor ...

  4. 频繁项集------->产生强关联规则的过程

    频繁项集------->产生强关联规则的过程 1.由Apriori算法(当然别的也可以)产生频繁项集 2.根据选定的频繁项集,找到它所有的非空子集 3.强关联规则需要满足最小支持度和最小置性度  ...

  5. 2-3 Vue实例中的数据,事件和方法

    上节课模板是写在Vue的实例里面的,现在我们可以把它恢复出来.写在挂载点的内部,看起来会舒服一点.Vue的数据项,可以配置任意的数据名字. <!DOCTYPE html> <html ...

  6. tyvj 2054 [Nescafé29]四叶草魔杖【克鲁斯卡尔+状压dp】

    传送:http://www.joyoi.cn/problem/tyvj-2054 来自lyd课件: 所以先预处理出各个sum为0的块,然后状压dfs取min来得到答案 #include<iost ...

  7. bzoj 2100: [Usaco2010 Dec]Apple Delivery【spfa】

    洛谷数据好强啊,普通spfa开o2都过不了,要加双端队列优化 因为是双向边,所以dis(u,v)=dis(v,u),所以分别以pa1和pa2为起点spfa一遍,表示pb-->pa1-->p ...

  8. 清北考前刷题day6早安

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #d ...

  9. 使用nginx和tomcat配置反向代理和动静分离

    背景 本人主修的编程语言是Java语言,因此最开始接触的Web开发也是JSP技术.使用Java开发的Web应用需要部署在专门的服务器程序上运行,比如Tomcat.但是一般很少会有人将Tomcat作为用 ...

  10. MySQL-ProxySQL中间件(二)| Admin Schemas介绍

    目录     MySQL-ProxySQL中间件(一)| ProxySQL基本概念: https://www.cnblogs.com/SQLServer2012/p/10972593.html     ...