电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

中华人民共和国公民身份证号码校验程序


发布日期:2021/3/28
 

/**

* roontenpracticetoolsidentitycard\IdentityCardjava

*

* Copyright (c) patulous function toolkit for java individual

* All rights reserved

*

* This toolkit all my items one is the last edition All the tools in the toolkit are defining

* some handy discreteness for me So I can doing items easily I hope you unfeignedly

* for use it

*/

package roontenpracticetoolsidentitycard;

import javautilCalendar;

/**

* <div>

* The <code>IdentityCard</code> class is implements IIdentityCard

* interfaceIn this interface therere some about checking an identity

* card need to using methods For example the year and the month and the day

* part this identity card must be right

* </div>

*

* @author Roon Ten

* @version

*/

public class IdentityCard {

private char[] chrs;

private final String CHECK_STRING = ([]{})[Xx];

/**

* Create an object of this class by an scheduled identity card

* @param obj

*/

public IdentityCard(Object obj) {

chrs = getChrs(obj);

}

/**

* Get a team for character by this identity card

* @param obj

* @return

*/

private char[] getChrs(Object obj) {

return StringvalueOf(obj)toCharArray();

}

/**

* If this identity card is legal one return true

*/

public boolean isLegalityFormat() {

return StringvalueOf(thischrs)matches(CHECK_STRING);

}

/**

* If the year this identity card is legal one return true

*/

public boolean isLegalityYear() {

boolean isPass = false;

if (chrs != null && chrslength >= ) {

int year = IntegerparseInt(chrs[] + + chrs[] + + chrs[]

+ + chrs[]);

int current = CalendargetInstance()get(CalendarYEAR);

isPass = year >= current && year <= current;

}

return isPass;

}

/**

* If the month this identity card is legal one return true

*/

public boolean isLegalityMonth() {

boolean isPass = false;

if (chrs != null && chrslength >= ) {

int month = IntegerparseInt(chrs[] + + chrs[]);

isPass = month > && month <= ;

}

return isPass;

}

/**

* If the day this identity card is legal one return true

*/

public boolean isLegalityDay() {

boolean isPass = false;

if (chrs != null && chrslength >= ) {

int yy = IntegerparseInt(chrs[] + + chrs[] + + chrs[]

+ + chrs[]);

int month = IntegerparseInt(chrs[] + + chrs[]);

int day = IntegerparseInt(chrs[] + + chrs[]);

Year year = new Year(yy);

isPass = yeargetMaxDay(month) >= day;

}

return isPass;

}

/**

* If the last character this identity card is legal one return true

*/

public boolean isLegalityEnd() {

boolean isPass = false;

if (chrs != null && chrslength >= ) {

int num = (IntegerparseInt(chrs[] + ) *

+ IntegerparseInt(chrs[] + ) *

+ IntegerparseInt(chrs[] + ) *

+ IntegerparseInt(chrs[] + ) *

+ IntegerparseInt(chrs[] + ) *

+ IntegerparseInt(chrs[] + ) *

+ IntegerparseInt(chrs[] + ) *

+ IntegerparseInt(chrs[] + ) *

+ IntegerparseInt(chrs[] + ) *

+ IntegerparseInt(chrs[] + ) *

+ IntegerparseInt(chrs[] + ) *

+ IntegerparseInt(chrs[] + ) *

+ IntegerparseInt(chrs[] + ) *

+ IntegerparseInt(chrs[] + ) *

+ IntegerparseInt(chrs[] + ) *

+ IntegerparseInt(chrs[] + ) * + Integer

parseInt(chrs[] + ) * ) % ;

switch (num) {

case :

isPass = == chrs[];

break;

case :

isPass = == chrs[];

break;

case :

isPass = X == chrs[] || x == chrs[];

break;

case :

isPass = == chrs[];

break;

case :

isPass = == chrs[];

break;

case :

isPass = == chrs[];

break;

case :

isPass = == chrs[];

break;

case :

isPass = == chrs[];

break;

case :

isPass = == chrs[];

break;

case :

isPass = == chrs[];

break;

case :

isPass = == chrs[];

break;

}

}

return isPass;

}

/**

* Get the length this identity card

*/

public int getLength() {

return thischrslength;

}

/**

* If it is a legal one

*/

public boolean isEffective() {

boolean isValid = false;

isValid = isLegalityFormat();

if (isValid) {

isValid = isLegalityYear();

if (isValid) {

isValid = isLegalityMonth();

if (isValid) {

isValid = isLegalityDay();

if (isValid) {

isValid = isLegalityEnd();

}

}

}

}

return isValid;

}

}

/**

* The <code>Year</code> class use to get a month day of a year

* @author TenRoon

* @version

*/

class Year {

/**

* Current year

*/

private int Year;

/**

* January days

*/

public static final int JAN_DAY = ;

/**

* February days of a year

* @param year

* @return

*/

public static final int FEB_DAY(int year) {

int feb_Day = ;

if ((year % == && year % != ) || year % == ) {

feb_Day = ;

}

return feb_Day;

}

/**

* March days

*/

public static final int MAR_DAY = ;

/**

* April days

*/

public static final int APR_DAY = ;

/**

* May days

*/

public static final int MAY_DAY = ;

/**

* June days

*/

public static final int JUN_DAY = ;

/**

* July days

*/

public static final int JUL_DAY = ;

/**

* August days

*/

public static final int AUG_DAY = ;

/**

* September days

*/

public static final int SEP_DAY = ;

/**

* Octomber days

*/

public static final int OCT_DAY = ;

/**

* November days

*/

public static final int NOV_DAY = ;

/**

* December days

*/

public static final int DEC_DAY = ;

/**

* Create a object of a current year

* @param Year

*/

public Year(int Year) {

thisYear = Year;

}

/**

* Get the max day a month

* @param month

* @return

*/

public int getMaxDay(int month) {

int maxDay = ;

switch (month) {

case :

maxDay = JAN_DAY;

break;

case :

maxDay = FEB_DAY(thisYear);

break;

case :

maxDay = MAR_DAY;

break;

case :

maxDay = APR_DAY;

break;

case :

maxDay = MAY_DAY;

break;

case :

maxDay = JUN_DAY;

break;

case :

maxDay = JUL_DAY;

break;

case :

maxDay = AUG_DAY;

break;

case :

maxDay = SEP_DAY;

break;

case :

maxDay = OCT_DAY;

break;

case :

maxDay = NOV_DAY;

break;

case :

maxDay = DEC_DAY;

break;

}

return maxDay;

}

}

上一篇:面向对象思想之 -- 限制对象属性的访问

下一篇:经验分享 JVM调优方法总结