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

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 Code12 {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-930                 a1++;31             }32             if(i>=10&&i<36)33             {34                 range[i]=a2;    //验证码取值a-z35                 a2++;36             }37             if(i>=36)38             {39                 range[i]=a3;    //验证码取值A-Z40                 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=http://www.mamicode.com/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 }

 

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