JSP的录入界面上有一个组织机构代码的textbox录入框,要去录入后,当保存记录时进行校验,不符合规则的给予提示。哪位高手能根据下面的规则,用JAVA写个校验的函数呀?多谢!
组织机构的录入是有一定规则的,规则如下:
组织机构代码是每一个机关、社会团体、企事业单位在全国范围内唯一的、始终不变的法定代码标识。
最新使用的组织机构代码在1997年颁布实施,由8位数字(或大写拉丁字母)本体代码和1位数字(或大写拉丁字母)校验码组成。本体代码采用系列(即分区段)顺序编码方法。校验码按下列公式计算:
8
C9 = 11 - MOD ( ∑Ci * Wi ,11) … (2)
i=1
其中:MOD —— 表示求余函数;
i —— 表示代码字符从左到右位置序号;
Ci —— 表示第i位置上的代码字符的值,采用附录A“代码字符集”所列字符;
C9 —— 表示校验码;
Wi —— 表示第i位置上的加权因子,其数值如下表:
i 1 2 3 4 5 6 7 8
Wi 3 7 9 10 5 8 4 2
当MOD函数值为1(即 C9 = 10)时,校验码用字母X表示。
组织机构的录入是有一定规则的,规则如下:
组织机构代码是每一个机关、社会团体、企事业单位在全国范围内唯一的、始终不变的法定代码标识。
最新使用的组织机构代码在1997年颁布实施,由8位数字(或大写拉丁字母)本体代码和1位数字(或大写拉丁字母)校验码组成。本体代码采用系列(即分区段)顺序编码方法。校验码按下列公式计算:
8
C9 = 11 - MOD ( ∑Ci * Wi ,11) … (2)
i=1
其中:MOD —— 表示求余函数;
i —— 表示代码字符从左到右位置序号;
Ci —— 表示第i位置上的代码字符的值,采用附录A“代码字符集”所列字符;
C9 —— 表示校验码;
Wi —— 表示第i位置上的加权因子,其数值如下表:
i 1 2 3 4 5 6 7 8
Wi 3 7 9 10 5 8 4 2
当MOD函数值为1(即 C9 = 10)时,校验码用字母X表示。
解决方案 »
- 关java的类问题?
- 急!vector的问题 java.lang.NullPointerException
- 数据库事务问题
- 请教一个字符串替换的问题
- 要一个类股票分析软件的那种程序,请大家给点主意和方法,谢谢
- 我的JAVA程序调用一个ORACLE PACKAGE里的PROCEDURE时报找不到PROCEDURE名,在线等待
- 编译好的servlet怎么运行啊?高手指点。
- synchronized
- 在Netscape下,swing.JApplet接收参数后,中文为乱码。200分
- 求教socket问题,tcp的socket会自动关掉吗?这中情况是怎么回事?帮忙看看好吗?
- JFormattedTextField实现DocumentFilter接口问题
- SpinnerDateModel里的步长参数问题
还有就是第一行的那个8代表什么?第三行的i=1又是什么?按照楼主的描述,本体代码可以是拉丁字符,那么Ci*Wi怎么取值?附录A是什么也不知道。另外本体代码是8位的,也就是说i的取值可以是1~8,那公式中的Ci,Wi取那个值?还是说要把8个都算一遍才能知道C9……
这段验证我有DELPHI写的,谁能改成JAVA的?
function dwdmjym(dwdm:string;var ReChar:Char):Boolean;
const
Wi: array[1..8] of string = ('3','7','9','10','5','8','4','2');
ai: array[0..35] of string = ('0','1','2','3','4','5','6','7','8','9','A',
'B','C','D','E','F','G','H','I','J','K','L',
'M','N','O','P','Q','R','S','T','U','V','W',
'X','Y','Z');
bi: array[0..35] of string = ('0','1','2','3','4','5','6','7','8','9','10',
'11','12','13','14','15','16','17','18','19','20','21',
'22','23','24','25','26','27','28','29','30','31','32',
'33','34','35');
function GetAi(S:Char):string;
var I:integer;
begin
Result :='';
for I:=0 to 35 do
if S=ai[I] then
begin
Result :=bi[I];
Break;
end;
end;
var
J,Sum,ModResult:integer;
S:string;
begin
Result:=True;
Sum:=0;
for J:=1 to Length(dwdm) do
begin
S:=GetAi(dwdm[J]);
if S='' then
begin
Result :=False;
Break;
end;
Sum:=Sum+strtoint(S)*strtoint(Wi[J]);
end;
if not Result then Exit;
ModResult:=Sum mod 11;
if ModResult=1 then ReChar:='X'
else if ModResult=0 then ReChar:='0'
else begin
S :=inttostr(11-ModResult);
ReChar:=S[1];
end;
end;function dwdmjy(dwdm:string):Boolean;
var ReChar:Char;
begin
Result :=dwdmjym(Copy(dwdm,1,8),ReChar);
if Result then
if ReChar<>dwdm[9] then Result :=False;
end;