Rumah  >  Soal Jawab  >  teks badan

求大神帮助写一段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

PHP中文网PHP中文网2741 hari yang lalu391

membalas semua(1)saya akan balas

  • ringa_lee

    ringa_lee2017-04-18 10:27:52

    Saya merujuk kepada contoh yang serupa dan menuliskannya. Saya harap pakar dapat menunjukkan sebarang penambahbaikan

        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 位必须为字母!");
            }
                                
        }

    balas
    0
  • Batalbalas