0914作业-----改进后的验证码生成器---生成4-8位可重复验证码

 1 import java.util.Scanner;
 2 import java.util.Random;
 3 public class Text1
 4 {
 5     public static void main(String[] args)
 6     {
 7         Code code=new Code();
 8         code.start();
 9     }
10 }
11 class Code
12 {
13     char[] range=new char[62];    //定义验证码取值范围的数组
14     char[] code;            //定义验证码保存数组
15     String codeRange;        //定义用于保存验证码取值范围的变量
16     String myCode;            //定义存放验证码字符串的变量
17     int state=1;            //定义递归控制变量
18             
19     //获取验证码取值范围的方法实现
20     public void range()
21     {
22         char a1='0';
23         char a2='a';
24         char a3='A';
25         for(int i=0;i<range.length;i++)
26         {
27             if(i<10)
28             {
29                 range[i]=a1;    //验证码取值0-9
30                 a1++;
31             }
32             if(i>=10&&i<36)
33             {
34                 range[i]=a2;    //验证码取值a-z
35                 a2++;
36             }
37             if(i>=36)
38             {
39                 range[i]=a3;    //验证码取值A-Z
40                 a3++;
41             }
42         }
43     }
44     //获取m-n范围内的随机数的方法实现,包含m,n本身
45     public int randomRange(int m,int n)
46     {
47         Random random=new Random();
48         int value=random.nextInt(n-m)+m;
49         return value;
50     }
51     //获取验证码
52     public void code()
53     {
54         for(int i=0;i<code.length;i++)
55         {
56             code[i]=codeRange.charAt(randomRange(0,61));
57         }
58     }
59     //获取用户输入并比较
60     public void compare()
61     {    
62         
63         code=new char[randomRange(4,8)];    //生成4-8随机数量的验证码保存数组
64         
65         code();                    //生成验证码并保存到code数组
66         myCode=new String(code);  //将验证码转换为字符串,以方便比较
67         
68         System.out.println("验证码为:"+myCode);
69         System.out.print("请按照上图中显示的字符输入验证码:");
70 
71         if(myCode.equals(new Scanner(System.in).nextLine()))
72         {
73             System.out.println("您的验证码输入正确");
74         }else if(state!=5)
75         {    
76             System.out.println("您的验证码输入错误,您还有"+(5-state)+"次机会");
77             state++;
78             compare();
79         }else if(state==5)
80         {
81             System.out.println("笨蛋,一次都不对!");
82         }
83     }
84     //程序总开关
85     public void start()
86     {
87         range();            //获取到验证码取值范围并保存到数组
88         codeRange=new String(range);    //将获取到的验证码取值范围转换为字符串,以方便截取
89         compare();            //功能实现
90     }
91 }

 

posted @ 2016-09-17 03:45  火山林风  阅读(228)  评论(0编辑  收藏  举报