求大神帮助写一段java 验证箱号的代码

标准箱号构成基本概念: 标准集装箱箱号由11位编码组成,包括三个部分:
1、 第一部分由4位英文字母组成。
2、 第二部分由6位数字组成。
3、 第三部分为校验码(Check Digit)由前4位字母和6位数字经过校验规则运算得到,用于识别在校验时是否发生错误。即第11位数字。
根据校验规则箱号的每个字母和数字都有一个运算的对应值。箱号的前10位字母和数字的对应值从0到Z对应数值为0到38,11、22、33不能对11取模数,所以要除去。
4、第N位的箱号对应值再分别乘以2^(N-1) (N=1,2,3………..10) 例如:箱号为CBHU3202732的集装箱它的第1位代码为C, 它的代码值=代码的对应值×2^(1-1) =13x2^0=13×1=13。 类推第2位代码为B
它的代码值=代码的对应值×2^(2-1) =12×2^1=12x2=24 以此类推得到箱号前10位代码的代码值。 将前10位的代码值乘积累加后对11取模
箱号为CBHU3202732的集装箱前10位箱号的代码累加值=4061,取11的模后为2,就是这个箱号第11位的识别码的数值。
以此类推,就能得到校验码。
A=10 B=12 C=13 D=14 E=15 F=16 G=17 H=18 I=19 J=20 K=21 L=23 M=24 N=25 O=26 P=27 Q=28 R=29 S=30 T=31 U=32 V=34 W=35 X=36 Y=37 Z=38

阅读 2.5k
1 个回答

自己参考了一下类似的例子 写出来 有改进的地方希望大神们可以提出来

    public static void main(String[] args) {
        String data="";
        if(data==null||data.length()<=0){
            return;
        }
        String []result=data.split("");    
        int n=data.length();        
        String Charcode = "0123456789A?BCDEFGHIJK?LMNOPQRSTU?VWXYZ";
        String[] Charcode2 = "0123456789A?BCDEFGHIJK?LMNOPQRSTU?VWXYZ".split("");
        double num=0;
        if(n==11){
            for(int i=1;i<11;i++){
                int idx=Charcode.indexOf(result[i]);
                if (idx == -1 || Charcode2[idx+1].equals("?")) {
                    break;
                }
                idx = (int) (idx * Math.pow(2, i-1));
                num += idx;                
            }
            int resultdata=(int) ((num % 11) % 10);
            System.out.println(data.substring(10, 11));
            if(data.substring(10, 11).equals(resultdata+"")){
                
            }else{
                System.out.println("箱号第11位校验位错误,正确校验位为:"+resultdata);
            }
            
        }else{
            System.out.println("箱号必须是 11 位!");
        }
        if(data.substring(0, 4).matches("[a-zA-Z]{4}")){
            
        }
        else{
            System.out.println("箱号前 4 位必须为字母!");
        }
                            
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏