杂记(四):数字字符串后添加一位校验码

绪论

杂七杂八,瞎记一下。

校验规则说明

这里写图片描述

  1. 自右向左顺序编号。
  2. 从序号2开始求出偶数位上之和。( 0+8+6+4+2=20 )①
  3. 从序号3开始求出奇数位上之和。( 9+7+5+3+1=25 )②
  4. 偶数位上之和乘3加上奇数位之和。 ( 20*3+25=85 )③
  5. 用大于或等于结果③且为10最小整数倍的数减去结果③,其差就是所求校验码的值。( 90-85=5 ,校验码X=5)
代码:
	public static String check(String Numbers) {
		try {
			int c1 = 0;
			int c2 = 0;

			// 反转字符串 123 变 321
			char[] scpators = Numbers.toCharArray();
			for (int i = 0; i < scpators.length / 2; i++) {
				char temp = scpators[i];
				scpators[i] = scpators[scpators.length - i - 1];
				scpators[scpators.length - i - 1] = temp;
			}

			for (int i = 0; i < scpators.length; i++) {
				if (i % 2 == 0) {
					c1 += Integer.valueOf(scpators[i]);
				} else
					c2 += Integer.valueOf(scpators[i]);
			}

			int c3 = c1 * 3 + c2;

			c3 = c3 - c3 / 10 * 10;

			if (c3 == 0) {
				return Numbers + "0";
			} else {
				int N = 10 - c3;

				return Numbers + N;
			}
		} catch (Exception ex) {
			ex.printStackTrace();
			return Numbers;
		}
	}
结果:

这里写图片描述
若验证正确性,可去掉字符串最后一位,再调用此方法,进行对比即可。

(若有什么错误,请留言指正,3Q)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值