产生验证码的两种算法

随机产生验证码是很常见也很简单的小算法,两层循环就可以搞定,随手记一下自己知道的两种比较常用的方法,以防忘记。

第一种:

首先定义一个char类型的包含字母和数字的数组

		char[] chars = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L',
				'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
				'3', '4', '5', '6', '7', '8', '9' };

定义一个和chars长度一样的标记数组,用来标记哪些位置被选择过,哪些位置没有被选择过。布尔型数组的默认值是false,被选择过后就为true了。
		boolean[] flag = new boolean[chars.length];


存放产生的验证码结果的数组,长度为5
char[] result = new char[5];


随机找出一个chars数组下标,如果没有被选过,就将改下标对应的值赋值给result,并且将对应的flag值赋值为true,如果被选择过则继续随机找
		for (int i = 0; i < result.length; i++) {
			int j;
			do {
				j = new Random().nextInt(chars.length);


			} while (flag[j]);
			result[i] = chars[j];
			flag[j] = true;
		}


将数组result结果连接成字符串
		String string = "";
		for (int i = 0; i < result.length; i++) {
			string += result[i];
		}

第二种:

首先定义一个char类型

		char[] a ={'A','B','C','D','E',
				'F','G','H','I','J','K',
				'L','M','N','O','P','Q',
				'R','S','T','U','V','W',
				'X','Z'};

首先随机找出一个字母,赋值给result,然后将随机找到的和i=0位置的字母进行交换,接着从1---a.length之间继续找(缩小区间),依次进行下去
		char[] result =new char[5];
		for(int i=0;i<5;i++){
			int j= i+ new Random().nextInt(a.length-i);
			result[i]= a[j];
			char temp = a[i];
			a[i]=a[j];
			a[j]=temp;
		}

将数组result结果连接成字符串
		String s ="";
		for(int i=0;i<result.length;i++){
			s += result[i];
		}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值