用JavaSE知识写生成验证码功能
来源:互联网 发布:vscode markdown 预览 编辑:程序博客网 时间:2024/06/07 04:07
生成验证码案例,写一个程序生成一个四位的验证码,验证码取值范围大写字母与数字。
验证码需要的数字和字母存储到数组中,随机数作为数组的索引使用,随机4次,即获取到4个字符,4个字符连接为一个字符串.
用户输入验证码,和已经生成的验证码进行比较判断
分析:
1.定义一个字符数组,内容是所有验证码中可能出现的字符(26个大写字母和10个数字字符)
如何初始化?可以使用静态初始化{‘A’,’B’,….’9’},这么太麻烦
可以使用动态初始化,然后通过for循环进行赋值
2.因为要产生随机的字符,所以要创建Random
3.要进行字符的拼接,创建StringBuilder
4.因为总共要生成4个字符进行拼接,所以使用for
(1)生成随机的int数字,范围[0,35]
(2)用该随机数作为索引获取对应的字符
(3)将字符拼接到StringBuilder对象当中
5.将StringBuilder对象变成String,最终就是生成的正确的验证码,打印输出
6.创建键盘录入对象
7.获取用户输入的验证码
8.进行比较
(1)如果输入的验证码和生成的验证码相同,提示”验证成功”
(2)如果输入的验证码和生成的验证码不相同,提示”验证失败,请重试”
9.所谓的重试,指的是重复执行步骤4-步骤8
代码片
public static void main(String[] args) {
while(true){
//调用booleanValidCode(),判断用户输入的验证码,和系统随机生成的验证码是否相同,返回Boolean值
boolean b =booleanValidCode();
if(b){
System.out.println("亲!验证成功");
break;
}else{
System.out.println("亲!验证失败,请重试");
System.out.println("=============================");
//continue;(这个可以省略)
}
}
}
//定义一个方法判断用户输入的验证码,和系统随机生成的验证码是否相同,返回Boolean值
public static boolean booleanValidCode() {
char[] chas = new char[36];
//调用getDict()方法得到一个装满验证码取值范围的字符数组
chas = getDict(chas);
//调用validCodeStr()方法,得到随机生成的验证码字符串
String ValidCode = validCodeStr(chas);
System.out.println("验证码 :"+ValidCode);
//调用userScanner()方法,传入验证码字符串,与用户输入的字符串作比较,返回Boolean值
boolean b = userScanner(ValidCode);
return b;
}
//传入验证码字符串,与用户输入的字符串作比较,返回Boolean值
public static boolean userScanner(String validCode) {
Scanner sc = new Scanner(System.in);
System.out.print("请用户输入验证码(亲!区分大小写哦):");
String userStr = sc.nextLine();
return userStr.equals(validCode);
}
//传入装满验证码取值范围的字符数组,返回随机生成的验证码字符串
public static String validCodeStr(char[] chas) {
Random r = new Random();
StringBuilder sb = new StringBuilder();
//int tempNum=0;
for (int i = 0; i < 4; i++) {
//tempNum=r.nextInt(36);
char ch = chas[r.nextInt(36)];
sb.append(ch);//append()//此方法通过重载,里面可以传入任何类型
}
return sb.toString();
}
//传入字符数组,返回一个装满验证码取值范围的字符数组
public static char[] getDict(char[] chas) {
for (int i = 0; i < 26; i++) {
chas[i] = (char)('A'+i);
}
for(int i = 0;i<10;i++){
chas[26+i] = (char)('0'+i);
}
//System.out.println(chas);//验证数据是否录入正确
return chas;
}
![此程序原理图](http://img.blog.csdn.net/20171029164234471?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamFja2V0X3N0YXI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
- 用JavaSE知识写生成验证码功能
- 用javase写一个类实现自动生成验证码的功能,验证码随机自动生成;
- 用javase写一个简单的生成验证码图片的程序(verification code)
- javase写一个随机生成验证码,有大写,小写,数字组成的
- 用JQuery写的一个简单的验证码功能
- JavaWEB小知识学习--验证码生成
- 实践---java实现生成验证码功能
- ssh生成图片验证码功能实现
- 实现登陆验证码功能,验证码插件(后期自己写一个自己验证码)
- JavaSE写的记事本程序,实现了简单的功能
- 用java写简单的验证码生成小程序 新手学java
- 今天写的一个 验证码生成 类
- PHP写一个生成验证码的类
- 用ssh写验证码
- Android功能模块化之生成验证码Bitmap
- PHP实现生成GIF动态验证码图片功能
- java web 生成图片验证码的功能实现
- JavaSE图像验证码简单识别程序
- NOIP集训Week 7总结
- Ajax-Js原生Ajax和Jquery的Ajax(一)
- 如何用atom直接运行python程序
- 饮料新品难存活,经销商需避开哪些选品雷区
- [Unity 网络]网络基础
- 用JavaSE知识写生成验证码功能
- java学习第39天,集合的排序
- 复杂度分析之很多重循环
- 3.线性表的链式表示
- Leetcode题解-31. Next Permutation
- Java总结第一篇——Java的八大基本类型
- SSH整合案例
- Java基础汇总
- Java基础2