随机产生验证码并进行输入匹配
2016-11-26 22:22
218 查看
》题目要求
》》用户输入产生验证码的个数》》根据个数随机产生验证码
》》用户输入验证码
》》验证码比较(不区分大小写)
》程序实现
1 package atest.dak.com; 2 3 import java.util.Arrays; 4 import java.util.Random; 5 import java.util.Scanner; 6 7 public class Test01{ 8 public static void main(String[] args) { 9 10 /*随机产生指定数量的不重复的验证码*/ 11 Scanner scan = new Scanner(System.in); 12 System.out.print("请输入需要产生的验证码的数量:"); 13 int number = scan.nextInt(); 14 char [] ran_verification_code = create_verification_code(number); 15 System.out.println("随机产生的" + number + "个验证码为: " + Arrays.toString(ran_verification_code)); 16 17 /*输入验证码*/ 18 System.out.print("请输入验证码:"); 19 String str01 = scan.next(); 20 char [] input_verification_code = str01.toCharArray(); 21 System.out.println("你输入的验证码是:" + Arrays.toString(input_verification_code)); 22 23 /*验证码判断*/ 24 int num_correct = 0; 25 for(int i = 0; i < input_verification_code.length; i++) { 26 for(int j = 0; j < ran_verification_code.length; j++) { 27 if((input_verification_code[i] == ran_verification_code[j]) && (i == j)) { 28 num_correct++; 29 } 30 } 31 } 32 if(number == num_correct) { 33 System.out.println("验证码输入正确。"); 34 } 35 else { 36 System.out.println("你输错啦" + (number - num_correct) + "个验证码。"); 37 } 38 39 } 40 41 /** 42 * 随机产生指定数量的验证码 43 * @param number TODO 44 * @return TODO 45 * 46 */ 47 private static char[] create_verification_code(int number) { 48 char[] letter = create_alphabet(); //存放所有的字母 49 boolean [] judge = new boolean[letter.length]; //存放所有字母是否被选中的状态 50 char[] ran_num = {}; //存放随机产生的验证码 51 int index = 0; 52 Random random = new Random(); 53 for(int i = 0; i < number; i++) { 54 do { 55 index = random.nextInt(letter.length); 56 } while(judge[index]); 57 judge[index] = true; //没选中一个字母,就将这个字母的状态变成选中 58 ran_num = Arrays.copyOf(ran_num, ran_num.length + 1); //扩容处理 59 ran_num[ran_num.length - 1] = letter[index]; //添加元素 60 } 61 // System.out.println(Arrays.toString(ran_num)); 62 return ran_num; 63 } 64 65 /** 66 * 产生全部大写字母和全部小写字母还有0到9的阿拉伯数字 67 * @return TODO 68 * 69 */ 70 private static char[] create_alphabet() { 71 char x = 'a'; 72 char y = 'A'; 73 char z = '0'; 74 char [] alphabet = {}; //用于存放字符 75 for(int i = 0; i < 26; i++) { //将26个小写字母放到alphabet数组中去 76 alphabet = Arrays.copyOf(alphabet, alphabet.length + 1); //扩容处理 77 alphabet[alphabet.length - 1] = (char)(x + i); //添加元素 78 } 79 for(int i = 0; i < 26; i++) { //将26个大写字母放到alphabet数组中去 80 alphabet = Arrays.copyOf(alphabet, alphabet.length + 1); 81 alphabet[alphabet.length - 1] = (char)(y + i); 82 } 83 for(int i = 0; i <= 9; i++) { //将10个阿拉伯数字放到alphabet中去 84 alphabet = Arrays.copyOf(alphabet, alphabet.length + 1); 85 alphabet[alphabet.length - 1] = (char)(z + i); 86 } 87 // System.out.println(Arrays.toString(alphabet)); 88 return alphabet; 89 } 90 91 }
View Code
相关文章推荐
- VB.net 产生随机验证码
- 类库------对一些字符串进行操作的类1.判断输入是否数字2.截取字符串函数3.过滤输入信息4.生成随机数5.生成验证码图片6.获取汉字第一个拼音7.半角转全角8.全角转半角
- 产生随机验证码(控制台)
- C#小程序—随机产生验证码
- C#产生随机验证码的代码
- JSP产生随机验证码
- 一个产生随机图片验证码的示例
- 产生随机验证码
- ASP.NET产生随机验证码
- 随机产生N个整数,并对其进行排序,查找……
- 随机产生验证码
- delphi随机输入验证码
- 随机产生验证码
- 编程产生一个int数组,长度为30,并向其中随机插入1-30,并且不能重复输出数组。实现一个冒泡排序算法对其进行排序,输出排序结果
- 重写IHttpHandler接口实现产生随机验证码图片
- 随机产生验证码
- 随机产生验证码
- 由计算机产生0-9之间的随机整数,用户输入猜测的数据,统计用户猜测的次数。产生随机数可以使用Math.rangom()静态方法,该方法返回正的double类型浮点数位于(0.0 1.0】间。
- 利用js进行输入框自动匹配字符
- 【C语言助教】随机产生100个数,判断用户输入的key是否在,并且输出key的位置