Java算法(七)
随机产生验证码
package com.liujintao.random;
import java.util.Random;
import java.util.Scanner;
public class RandomNumber {
/**
* 该函数调用验证码所有的函数,完成验证码模块功能开发
* @param args
*/
public static void main(String[] args) {
// 1、调用产生验证码元素函数
char[] result = CodeCharArray();
// 2、调用产生验证码下标索引的数组函数
int[] array_index = RandomCode();
// 3、调用生成验证码函数
String code = getCode(result, array_index);
System.out.println("生成的验证码为:" + code);
// 4、调用获取用户输入的验证码函数
String user = InputCode();
System.out.println("用户输入的验证码为:" + user);
// 5、调用验证结果的处理函数
handleCode(code, user);
}
/**
*1.获取验证码元素
*/
public static char[] CodeCharArray() {
// 产生的验证码元素方法字符数组中
char[] ch = new char[62];
// 获取验证码元素
int index = 0;
for (char c = 'a'; c <= 'z'; c++) {
// 注意,字符可以用数组表示,所以这里用char类型,计数器从c 到 z
ch[index] = c;
index++;
}
for (char c = 'A'; c <= 'Z'; c++) {
ch[index] = c;
index++;
}
for (char i = '0'; i <= '9'; i++) {
ch[index] = i;
index++;
}
return ch;
}
/**
* 2.产生验证码下标索引的方法
*/
public static int[] RandomCode() {
Random r = new Random();
int[] indexNum = new int[5];
for (int i = 0; i < 5; i++) {
indexNum[i] = r.nextInt(26 + 26 + 10);
}
return indexNum;
}
/**
*3.得到验证码字符串的方法
* @param ch
* @param index
* @return
*/
public static String getCode(char[] ch, int[] index) {
// 用字符串存放获得的每个字符验证码,并返回
String CodeStr = "";
for (int i = 0; i < index.length; i++) {
CodeStr += ch[index[i]];
}
return CodeStr;
}
/**
* 4.前台发送过来用户输入的验证码
*/
public static String InputCode() {
Scanner sc = new Scanner(System.in);
// 这里是模拟请求的验证码
String inputCode = "";
System.out.println("请输入验证码:");
for (int i = 0; i < 5; i++) {
// 注意请求过来的都是json格式,需要转换成String(所以这里用String)
String str = sc.next();
inputCode += str;
}
return inputCode;
}
/**
* 5.处理验证码是否正确的方法
*/
public static void handleCode(String code, String user) {
if (code.equals(user)) {
System.out.println("验证码输入正确!");
} else {
System.out.println("验证码输入有误,请检查后重新输入!");
}
}
}
运行效果: