java短信生成6位数的校验码

/**
	 * 产生随机的六位数
	 * @return
	 */
	public static String getThree(){
		Random rad=new Random();
		return rad.nextInt(1000000)+"";
	}


-----------------------------------华丽的分隔符---------------------------------------------------------------------------------------------

---以上代码有bug,谢谢http://blog.csdn.net/cslience的指点--

之前的做法是写一个循环每次产生0~9之间的一个整数,循环6次得到一个6位数的校验码



今天算是涨姿势了~~~



上述方法补0的原则是:随机生成几位数就有几个0~~~


-----------------------------------正确的操作方式---------------------------------------------------------------------------------------------

判断当长度不为6的时候,加一个递归,换个姿势再来一次:

/**
	 * 产生随机的六位数
	 * @return
	 */
	public static String getSix(){
		Random rad=new Random();
		
		String result  = rad.nextInt(1000000) +"";
		
		if(result.length()!=6){
			return getSix();
		}
		return result;
	}
测试:循环1000次,都是6位了!!

for (int j = 0; j < 1000; j++) {
			System.out.println(getSix());
		}



Java中,查验身份证号码通常涉及到校验的计算,这是为了保证身份证信息的有效性和完整性。中国身份证号码有18,最后一校验码,用于验证前面17位数字是否按照一定的规则生成。这种规则称为刘洪涛校验算法(也称作“18身份证校验”),它利用了数学的奇偶校验和原理。 具体的校验步骤如下: 1. 将身份证号码分为前17(包括倒数第二的X或0)和最后一。 2. 奇数乘以3,偶数直接相加。 3. 将上述结果相加得到总和。 4. 如果总和除以11余数为10,说明校验码是1;如果余数为其他数字,则校验码就是对应的数字(例如,余数为3,校验码为3)。 在Java中,你可以编写如下的函数来完成这个任务: ```java public class IDCardCheck { public static boolean checkIDCard(String idCard) { if (idCard.length() != 18 || !isValidIDCardPrefix(idCard)) return false; int sum = 0; for (int i = 0; i < 17; i++) { if ((i % 2 == 0) && idCard.charAt(i) != 'X') { sum += Integer.parseInt(idCard.substring(i, i + 2)); } else if (i % 2 == 1) { sum += Integer.parseInt(String.valueOf(idCard.charAt(i))); } } int remainder = sum % 11; return remainder == 0 || (remainder == 10 && idCard.charAt(16) == 'X'); } private static boolean isValidIDCardPrefix(String idCard) { // 判断前两是否是有效的地区代码 String prefix = idCard.substring(0, 2); // ... (添加对地区代码的检查) return true; // 这里只是一个示例,实际需要根据规定验证前缀 } } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值