barcode EAN13 12位计算出最后一位

    /**
     * 计算barcode最后一位
     * @param code 12位的barcode
     * @return
     */
    public static String padBarcode(String code){
        if( null == code || code.length() != 12 ){
            throw new NullPointerException("code 的位数不对!");
        }
        //补上位数 code
        String code_ = code+"0";
        int totalEvent = 0;
        int totalCardinal = 0;
        
        char[] resolve = code_.toCharArray();
        for( int i = 1; i <= resolve.length; i++ )
        {
            int temp = Integer.parseInt((resolve[i-1])+"");
            if( i % 2 == 0 ){
                totalEvent += temp;//偶数和
            }else{
                totalCardinal += temp;//基数和
            } 
        }
        int x = ( totalEvent * 3 ) + totalCardinal;
        
        //取x的值   10最小整数倍的数
        int all = x; 
        if( x % 10 != 0 ){
            all = ( (x / 10 +1) * 10);
        }
        return code+(all-x);
    }
原文地址:https://www.cnblogs.com/Mr-Y1907/p/14831877.html