概述
import java.util.Random;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**随机验证码数字+字母的难点就是怎么用字符串的形似表现出来,
因为Random只随机出数字类型的随机数,而String类型却要先行转换成StringBuffer类型,
通过对字符的处理来获得数字类型的字符下标来获得字符,
然后通过StringBuffer来拼接字符成为字符串,
然后通过toString来获得StringBuffer的字符串输出,
然后才能进行比较。*/
public class Tesat3
{
public static void main(String[] args)
{
String str= "qwertyuiopasdfghjklzxcvbnm1234567890Q";//大写字母写不下了
Random random = new Random();
Scanner scanner = new Scanner(System.in);
boolean b = true;
boolean c = true;
while (b)//控制循环
{
c = true;
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 4; i++)//随机获取四个String类型str的字符
{
int number = random.nextInt(str.length());//随机一个str的长度位置数字下标
sb.append(str.charAt(number));//接收随机位置上的字符
}
//另外一种思路是char类型的字符可以用数字表示,ascii表有字母表对应的数字,通过随机这些
//数字来表示字母,也可以生成字母数字混合验证码
String str3 = sb.toString();//接收sb的字符串
System.out.println(sb);
System.out.println("请输入验证码");
int num = 0;
while (c)//控制循环
{
num++;
// System.out.println(num);//计算输入次数
String str2 = scanner.next();
Pattern compile = Pattern.compile("[a-zA-Z_0-9]{4}");
Matcher matcher = compile.matcher(str2);//进行字符合法性比较
boolean matches = matcher.matches();
if (matches)
{
// System.out.println("1"+matches);
//忽略大小写的比较str.equalsIgnoreCase(str3)
boolean equalsIgnoreCase = str2.equalsIgnoreCase(str3);
if (equalsIgnoreCase)
{
b = false;
System.out.println("验证码输入正确");
break;
}
} else if (num > 2)//判断输入次数
{
System.out.println("错误次数达到3次!");
c = false;//跳出该循环
}
System.out.println("输入错误!剩余次数: " + (3 - num));
}
}
}
}
转载于:https://blog.51cto.com/namelin2/1715586
最后
以上就是清爽大侠为你收集整理的字母数字混合随机验证码的全部内容,希望文章能够帮你解决字母数字混合随机验证码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复