栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA-实现字符串的分割(身份证判断年龄)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA-实现字符串的分割(身份证判断年龄)

JAVA-实现字符串的分割(身份证判断年龄)

目录
  • JAVA-实现字符串的分割(身份证判断年龄)
    • 1.String类下的方法subString()
    • 2.判断性别
    • 3.年龄计算
      • 3.1.把身份证日期和规定的指定日期都变成毫秒
      • 3.2.多重if语句判断
    • 4.完整代码如下
    • 5.总结

1.String类下的方法subString()

subString()方法有几个方法重载,我这里针对的介绍含有两个参数的subString()方法
下面以字符串“substring”举例

substring
012345678

假如我们使用str = subString(0, 4);
那么str到底接收到了什么呢?
答案是:subs
有了例子就好说了,index-4对应的字符并没有被接收到
所以我们截取身份证号的有效信息是要注意截取长度

2.判断性别
  • 众所周知身份证倒数第二位代表了这个人的性别
  • 偶数是男孩子
  • 奇数是女孩子
  • 那么我们把截取道的倒数第二位通过Integer自带的方法parseInt()把字符串变成int型
  • 然后和2取余即可
    代码如下
String sex = id.substring(16, 17);
        int sex_ = Integer.parseInt(sex);//可以把string变成int
        if (sex_ % 2 == 0) {
            System.out.print("female,");
        } else {
            System.out.print("male,");
        }
3.年龄计算

我自己弄了连个方法,第一个方法可能略有不符合题意

3.1.把身份证日期和规定的指定日期都变成毫秒
//        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
//
//        String date = new String("2021-10-26");
//        String date2 = new String();
//        date2 = year.concat("-");
//        date2 = date2.concat(month);
//        date2 = date2.concat("-");
//        date2 = date2.concat(myday);
        System.out.println("date2 = " + date2);
//
//
//        Date d1 = df.parse(date);
//        Date d2 = df.parse(date2);
//        long nd = 1000 * 24 * 60 * 60;
        long nh = 1000 * 60 * 60;
//        long nm = 1000 * 60;
//        long ns = 1000;
 获得两个时间的毫秒时间差异
//        long diff = d1.getTime() - d2.getTime();
 计算差多少天
//        long day = diff / nd;
// 计算差多少小时
        long hour = diff % nd / nh;
// 计算差多少分钟
        long min = diff % nd % nh / nm;
// 计算差多少秒//输出结果
        long sec = diff % nd % nh % nm / ns;
        System.out.println(day);
//        long diffyear = day / 365;
//        System.out.println(diffyear);//这个算法其实不符合人的直观感受!!!

做一些解释:
DateFormat类可以指定Date类中日期的格式
yyyy-代表年
mm-代表月
dd-代表日
还有秒、毫秒的格式这里我就不赘述了。
为什么说有点不符合呢
在人活的这几年里不免要碰到闰年,所以总日子数/365 不一定准确

3.2.多重if语句判断
public static void diffDate(int year, int month, int day) {
        int diff = 0;
        if (year < 2021) {
            if (month < 10) {
                diff = 2021 - year;
            } else if (month == 10) {
                if (day < 26) {
                    diff = 2021 - year;
                } else {
                    diff = 2020 - year;
                }
            } else {
                diff = 2020 - year;
            }
        } else if(year == 2021){
            if (month < 10) {
                diff = 2021 - year;
            } else if (month == 10) {
                if (day < 26) {
                    diff = 2021 - year;
                } else if(day == 26){
                    System.out.println("今天刚出生!");
                }else{
                    System.out.println("你比地球的年龄还大!");
                }
            } else {
                System.out.println("你的年龄比地球还大!");
            }
        }else{
            System.out.println("你在逗我吧,你比地球年龄还大???");
        }
        System.out.println("今年 = " + diff + "岁!");
    }
4.完整代码如下
import java.text.ParseException;
import java.util.Date;
import java.util.Scanner;
import java.text.SimpleDateFormat;
import java.text.DateFormat;

public class idSubString {
    public static void main(String[] args) throws ParseException {
        String id = new String();
        Scanner cin = new Scanner(System.in);
        System.out.print("请输入18位身份证号:");
        //id = cin.next();
        //System.out.println(id);
        do {
            id = cin.next();
            if (id.length() != 18) {
                System.out.println("您输入的身份证信息不合法!请重新输入:");
            } else {
                break;
            }
        } while (true);
        System.out.println(id);

        String year = new String();
        String month = new String();
        String myday = new String();
        year = id.substring(6, 10);
        //System.out.println(year);
        month = id.substring(10, 12);
        //System.out.println(month);
        myday = id.substring(12, 14);
        //System.out.println(day);
        System.out.print(year + "-" + month + "-" + myday + ",");
        String sex = id.substring(16, 17);
        int sex_ = Integer.parseInt(sex);
        if (sex_ % 2 == 0) {
            System.out.print("female,");
        } else {
            System.out.print("male,");
        }
        int year_ = Integer.parseInt(year);
        int month_ = Integer.parseInt(month);
        int day_ = Integer.parseInt(myday);
//
//        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
//
//        String date = new String("2021-10-26");
//        String date2 = new String();
//        date2 = year.concat("-");
//        date2 = date2.concat(month);
//        date2 = date2.concat("-");
//        date2 = date2.concat(myday);
        System.out.println("date2 = " + date2);
//
//
//        Date d1 = df.parse(date);
//        Date d2 = df.parse(date2);
//        long nd = 1000 * 24 * 60 * 60;
        long nh = 1000 * 60 * 60;
//        long nm = 1000 * 60;
//        long ns = 1000;
 获得两个时间的毫秒时间差异
//        long diff = d1.getTime() - d2.getTime();
 计算差多少天
//        long day = diff / nd;
// 计算差多少小时
        long hour = diff % nd / nh;
// 计算差多少分钟
        long min = diff % nd % nh / nm;
// 计算差多少秒//输出结果
        long sec = diff % nd % nh % nm / ns;
        System.out.println(day);
//        long diffyear = day / 365;
//        System.out.println(diffyear);//这个算法其实不符合人的直观感受!!!
        //如果用日期算的话会很麻烦,没有现成的算法,电脑实在是太笨了!!!
        diffDate(year_, month_, day_);

    }   //我想了一下实现一下这个算法
    public static void diffDate(int year, int month, int day) {
        int diff = 0;
        if (year < 2021) {
            if (month < 10) {
                diff = 2021 - year;
            } else if (month == 10) {
                if (day < 26) {
                    diff = 2021 - year;
                } else {
                    diff = 2020 - year;
                }
            } else {
                diff = 2020 - year;
            }
        } else if(year == 2021){
            if (month < 10) {
                diff = 2021 - year;
            } else if (month == 10) {
                if (day < 26) {
                    diff = 2021 - year;
                } else if(day == 26){
                    System.out.println("今天刚出生!");
                }else{
                    System.out.println("你比地球的年龄还大!");
                }
            } else {
                System.out.println("你的年龄比地球还大!");
            }
        }else{
            System.out.println("你在逗我吧,你比地球年龄还大???");
        }
        System.out.println("今年 = " + diff + "岁!");
    }
}
5.总结

本章作业学了字符串的一个方法subString()和日记的简单计算算法,最终成功算出年龄就好了!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/351980.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号