《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > 用java實現大寫金額轉換及身份證15位轉18位代碼

用java實現大寫金額轉換及身份證15位轉18位代碼

2009-01-06
作者:孫國斌

??? 在用java作項目程序開發過程中,遇到財務制度要求在作社保基金支付時,套打《專用付款款憑證》,金額項除阿拉伯數字外,還要求將人民幣(大寫)打印出來;另有許多參保人員,居民身份證的位數由15位更換成18位,若此類人員進行新參保登記時,不進行校驗檢查,將會造成同一參保人員,以不同的居民身份證號在業務系統中進行重復登記。故需提供將15位身份證轉換成18位,并檢驗此值與核心數據庫是否有相同值,有則提示此人員已參保。另提供對18位身份證的校驗功能(注:按已公布的國標算法)。
模塊描述

??? (1)人民幣在大寫功能轉換,見doubleToChinese模塊,實現的方法為將數值及位數分別取出后,按對應的值將其轉換成字串即可。如100,則大寫金額為“壹百整“;對負金額則加負字,例-100.01,大寫金額為“負壹百零壹分整”。

??? (2)身份證由15位轉18位,可見fixPersonIDCode模塊。附:提交判斷是否為有效的18位身份證號isIdentityId模塊,方法為判斷年份為19開頭的18位身份證號,將其轉化為15位后,按國標進行修補,若經轉換的值同輸入的18位值相同,則說明身份證編號是有效的,否則身份證號可能有誤;考慮到2000年以后出生的人的身份證編號,可能到2016年以后才能申請到,到時此系統能否還在使用很難說,故暫未提供對其身份證號碼的判斷功能。但在此也提供解決的辦法,可以先判斷18位身份證中的年份,對以20開頭的年份,進行轉換時修補程序中改為加20既可。
??? 目前以上功能模塊在社保核心業務系統應用正常。
??? 本例用jbuilder7編譯通過。說明:以下代碼中所加注的說明,說明功能模塊的作用。在具體應用中借鑒或拷貝此代碼到實際程序中即可使用。
package csi.utilitytools;

import java.text.DateFormat;
import java.text.NumberFormat;
import java.util.*;
import java.io.ByteArrayInputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;

public class COMUT {

public COMUT() {
? }

? /**
?? * 修補15位居民身份證號碼為18位
?? * @param personIDCode
?? * @return
?? */
? public static String fixPersonIDCode(String personIDCode)
? {
??? String retIDCode = "";
??? if ( personIDCode == null || personIDCode.trim().length() != 15 ) {
????? return personIDCode;
??? }
??? String id17 = personIDCode.substring(0,6) + "19" + personIDCode.substring(6,15);? //15為身份證補'19'

??? char[] code = {'1','0','X','9','8','7','6','5','4','3','2'};? //11個
??? int[] factor={0, 2,4,8, 5,10,9,7, 3,6,1,2, 4,8,5,10, 9,7}; //18個;
??? int[] idcd = new int[18];
??? int???? i;
??? int???? j;
??? int???? sum;
??? int???? remainder;

??? for (i=1; i<18; i++)
??? {
????? j = 17 - i ;
????? idcd[i] = Integer.parseInt(id17.substring(j, j+1));
??? }

??? sum = 0;
??? for (i=1; i<18; i++)
??? {
????? sum = sum? + idcd[i] * factor[i];
??? }
??? remainder = sum%11;
??? String lastCheckBit = String.valueOf(code[ remainder ]);
??? return id17 + lastCheckBit;
??? }

??? /**
???? *人民幣大寫金額轉換
???? * @param number
???? * @param pattern
???? * @return
???? * @throws GeneralException
???? */
??? public static String format(double number,String pattern)
??? {
????? DecimalFormat df = new DecimalFormat(pattern);
????? return df.format(number);
??? }
??? public static String format(String number,String pattern)
??? {
????? double d = new Double(number).doubleValue();
????? return format(d,pattern);
??? }
??? public static String doubleToChinese(double sumofcash)
??? {
????? String[] arr = {"分","角","元","拾","百","千","萬","拾萬","百萬",
??????????????????????????????? "千萬","億","拾億","百億","千億"};
????? String sTmp = "";
????? String sMoney = "";
????? String header = "";
????? if(sumofcash<0)
??????? header = "負";
????? sumofcash = Math.abs(sumofcash);
????? double dTmp =sumofcash*100;
????? sMoney = format(dTmp,"0,000.#");
????? StringTokenizer st = new StringTokenizer(sMoney,",");
????? String tmp = "";
????? while (st.hasMoreElements()){
??????? tmp = tmp + st.nextToken();
????? }
????? sMoney = tmp;
????? int iLen = sMoney.length();
????? int count = 0;
????? for (int i=0;i????? {
??????? String sTemp = sMoney.substring(i,i+1);
??????? if (sTemp.equals("0"))
??????? {
????????? count++;
????????? if (count==1)
????????? {
??????????? sTmp = sTmp + trans(sTemp);
????????? }
??????? }else
??????? {
????????? sTmp = sTmp + trans(sTemp);
????????? sTmp = sTmp + arr[iLen-i-1];
????????? count = 0;
??????? }

????? }
????? sTmp = sTmp.trim();
????? iLen = sTmp.length();
????? if (sTmp.substring(iLen-1,iLen).equals("零"))
????? {
??????? sTmp = sTmp.substring(0,iLen-1);
????? }
????? sTmp = sTmp + "整";
????? sTmp = header.concat(sTmp);
????? return sTmp;
??? }
??? private static String trans(String args)
??? {
????? int iTemp = Integer.parseInt(args);
????? String sRes = "";
????? switch (iTemp)
????? {
??????? case 1:sRes = "壹";
????????? break;
??????? case 2:sRes = "貳";
????????? break;
??????? case 3:sRes = "叁";
????????? break;
??????? case 4:sRes = "肆";
????????? break;
??????? case 5:sRes = "伍";
????????? break;
??????? case 6:sRes = "陸";
????????? break;
??????? case 7:sRes = "柒";
????????? break;
??????? case 8:sRes = "捌";
????????? break;
??????? case 9:sRes = "玖";
????????? break;
??????? case 0:sRes = "零";
????? }
????? return sRes;
??? }


/**
?* 判斷是否是有效的18位或15位居民身份證號碼
?* @param identityId:18位或15位居民身份證號碼
?* @return:true: 有效的18位或15位居民身份證號碼
?*/
??? public static boolean isIdentityId(String identityId) {
????? if(isEmpty(identityId)) return false;
????? try{
??????? if(identityId.length()==18){
????????? String identityId15 = identityId.substring(0,6)+identityId.substring(8,17);
????????? //System.out.println("the identityId15 is : "+identityId15);
????????? if(fixPersonIDCode(identityId15).equalsIgnoreCase(identityId)) {
??????????? return true;
????????? }else {
????????? return false;
????????? }
??????? }else if(identityId.length()==15){
????????? try{
??????????? Long.parseLong(identityId);
??????????? return true;
????????? }catch(Exception ex){
??????????? return false;
????????? }
??????? }else{
????????? return false;
??????? }
????? }catch(Exception ex){
??????????? return false;
????? }

? }

? /**
?? * 判斷是否為空串""
?? */
? public static boolean isEmpty(String sValue) {
??? if(sValue==null) return true;
??? return sValue.trim().equals("") ? true : false ;
?}

? public static void main(String[] args) {

??? try{
????? System.out.println(doubleToChinese(12003000.01)); //打印金額大寫
System.out.println(fixPersonIDCode("650103760113073"));//身份證15位轉18位
System.out.println(isIdentityId ("650103760113073")); //否是為有效的15位身份證號

??? } catch (Exception e) {
????? e.printStackTrace();
??? }
? }
}

程序調試結果如下:
D:\JBuilder7\jdk1.3.1\bin\javaw -classpath "D:\ejbwork\xjsb\classes;D:\bea\wlserver6.0\lib\weblogic.jar;C:\bea\wlserver6.1\lib\weblogic_sp.jar;C:\bea\wlserver6.1\lib\weblogic.jar;D:\JBuilder7\jdk1.3.1\demo\jfc\Java2D\Java2Demo.jar;D:\JBuilder7\jdk1.3.1\jre\lib\i18n.jar;D:\JBuilder7\jdk1.3.1\jre\lib\jaws.jar;D:\JBuilder7\jdk1.3.1\jre\lib\rt.jar;D:\JBuilder7\jdk1.3.1\jre\lib\sunrsasign.jar;D:\JBuilder7\jdk1.3.1\lib\dt.jar;D:\JBuilder7\jdk1.3.1\lib\htmlconverter.jar;D:\JBuilder7\jdk1.3.1\lib\tools.jar"? -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=zw2k:1992,suspend=y
?csi.utilitytools. COMUT
壹千萬貳百萬零叁千零壹分整650103197601130732
true

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲欧美视频在线观看视频| 久久不射网站| 亚洲欧美日韩一区二区| 亚洲伦理久久| 91久久中文| 亚洲国产mv| **欧美日韩vr在线| 在线国产精品一区| 精品av久久久久电影| 国内自拍一区| 精品成人久久| 激情亚洲成人| 激情婷婷欧美| 亚洲国产高清在线| 亚洲经典三级| 99re热这里只有精品免费视频| 亚洲精品一区二区三区av| 亚洲人成在线观看| 99精品国产99久久久久久福利| 91久久久久久久久久久久久| 亚洲国产精彩中文乱码av在线播放| 在线观看福利一区| 亚洲国产精品久久久久婷婷884| 亚洲成人在线| 亚洲三级电影全部在线观看高清 | 国产欧美日韩视频一区二区三区 | 日韩午夜在线观看视频| 9色精品在线| 亚洲自拍啪啪| 久久爱www| 蜜臀久久99精品久久久画质超高清| 男女精品网站| 欧美日韩视频在线一区二区| 国产精品欧美精品| 国产在线成人| 在线日韩av片| 99www免费人成精品| 亚洲一本大道在线| 欧美主播一区二区三区| 最新国产成人在线观看| 亚洲一二三区在线观看| 欧美一区二区三区视频| 另类亚洲自拍| 欧美深夜影院| 国内成人自拍视频| 亚洲激情二区| 亚洲欧美国产毛片在线| 亚洲国产成人91精品| 亚洲精选在线观看| 亚洲欧美一区二区三区久久 | 国产精品高清免费在线观看| 国产欧美在线看| 亚洲大片精品永久免费| 一本一道久久综合狠狠老精东影业 | 久久夜色精品国产| 日韩亚洲在线观看| 国产精品久久久久久久久久久久久久 | 欧美一区二区三区免费看| 久久精品国产亚洲一区二区| 久久九九免费视频| 欧美激情一区二区久久久| 国产精品vip| 一区二区在线观看av| 一本色道久久精品| 久久精品成人| 亚洲一级在线观看| 久久永久免费| 国产精品亚洲欧美| 亚洲人成网站影音先锋播放| 亚洲欧美另类中文字幕| 日韩视频在线一区二区| 久久国产福利| 欧美视频成人| 亚洲成人自拍视频| 亚洲一级在线观看| 亚洲黄色天堂| 欧美一区二区三区四区视频| 欧美精品一区二区三区蜜臀| 国产亚洲视频在线观看| 日韩视频精品在线| 欧美一区二区三区婷婷月色| 在线视频你懂得一区 | 另类av导航| 国产精品久久久久久久久久直播| 一区二区在线不卡| 亚洲免费在线视频| 日韩午夜精品视频| 久久综合中文色婷婷| 国产精品一区二区三区免费观看 | 亚洲黄页视频免费观看| 欧美一区二区高清在线观看| 欧美日产一区二区三区在线观看| 精品av久久久久电影| 午夜精品理论片| 亚洲一区黄色| 欧美日韩午夜剧场| 91久久精品国产| 亚洲黄色精品| 久久综合伊人| 黄色工厂这里只有精品| 午夜精品久久久久久久男人的天堂 | 国产日韩欧美在线播放不卡| 一区二区三区国产精品| aa级大片欧美三级| 欧美粗暴jizz性欧美20| 精品av久久久久电影| 欧美在线精品免播放器视频| 欧美一区二区国产| 国产精品三级久久久久久电影| 99riav国产精品| 在线一区二区三区做爰视频网站| 欧美成人综合网站| 亚洲国产欧美在线人成| 亚洲人成网站在线播| 久久综合色播五月| 激情亚洲成人| 亚洲欧洲一二三| 欧美大片网址| 亚洲精品久久久蜜桃| 日韩亚洲欧美高清| 欧美猛交免费看| 亚洲人成绝费网站色www| 亚洲乱码精品一二三四区日韩在线| 欧美96在线丨欧| 亚洲国产精品999| 99视频热这里只有精品免费| 欧美精品三级日韩久久| 亚洲精品欧美| 亚洲一级在线观看| 国产精品视频在线观看| 亚洲视频电影图片偷拍一区| 亚洲综合二区| 国产欧美一区二区精品忘忧草| 午夜精品久久| 久久久综合网| 亚洲国产另类久久精品| 99精品国产在热久久| 欧美日韩国产色综合一二三四| 999在线观看精品免费不卡网站| 亚洲影院免费观看| 国产精品一区一区| 欧美在线亚洲在线| 男人天堂欧美日韩| 99精品欧美一区| 欧美亚洲日本国产| 国模私拍一区二区三区| 91久久精品日日躁夜夜躁国产| 欧美激情一区二区三区不卡| 99精品免费视频| 欧美夜福利tv在线| 狠狠综合久久| 亚洲免费成人av电影| 欧美亚洲第一页| 欧美一区二区三区视频在线观看| 麻豆91精品| 亚洲巨乳在线| 欧美中文字幕视频| 在线观看国产一区二区| 亚洲精品在线三区| 欧美三区在线视频| 欧美亚洲网站| 欧美精品色一区二区三区| 在线一区免费观看| 久久精品99无色码中文字幕| 在线观看视频一区二区| 亚洲深夜av| 国内免费精品永久在线视频| 99精品热视频| 国产亚洲精品7777| 9久草视频在线视频精品| 国产精品资源在线观看| 亚洲国产精品激情在线观看| 欧美日韩在线综合| 欧美一区二区日韩一区二区| 亚洲一区二区三区中文字幕| 国产亚洲精品久久久久久| 亚洲国产一二三| 久久激情五月婷婷| 最新成人在线| 久久精品一区| 欧美色区777第一页| 亚洲欧美欧美一区二区三区| 久久综合综合久久综合| 亚洲欧洲日产国产综合网| 香蕉久久国产| 亚洲国产天堂网精品网站| 亚洲欧美日韩国产综合| 亚洲福利在线观看| 亚洲欧美在线免费观看| 国内外成人免费激情在线视频| 亚洲视频精选| 在线观看国产成人av片| 亚洲欧美国产精品桃花| 亚洲国产精品久久久久秋霞不卡| 亚洲欧美网站| 国产欧美精品一区aⅴ影院| 亚洲日本欧美| 国产日韩视频| 亚洲午夜激情网站| 亚洲国产成人久久综合一区|