首页 > 代码库 > 0914作业

0914作业

技术分享

技术分享

技术分享

  1 import java.util.Scanner;  2 import java.util.Random;  3 public class HomeWork0914 implements HomeWork  4 {  5     /*成员变量、常量定义区*/  6     Scanner scanner=new Scanner(System.in);//定义扫描器实例变量  7   8     char[] a=new char[62];    //定义第二题的验证码取值范围数组  9     int[] x=new int[4];     //定义第二题控制验证码生成的4个随机数的存放数组 10     char[] y=new char[4];   //定义第二题验证码存放数组 11     int state=1;        //定义第二题递归方法的控制变量 12     String zhong="";    //定义第二题存放验证码的字符串变量 13  14     int[] num;        //定义第三题移位数量的存放数组 15     String password1;    //定义第三题存放密码的字符串变量 16     int[] password2;    //定义第三题加密后密码存放字符串变量 17     String password3="";    //定义第三题解密后存放密码的字符串变量 18  19     /*方法调用区*/ 20     //实现接口,获取家庭作业题目 21     public void getHRMessage() 22     { 23         getMs(); 24     } 25     //实现接口,获取家庭作业答卷     26     public void getHR() 27     {     28         home1();        //第一题答卷 29         home2();        //第二题答卷 30         home3();        //第三题答卷 31     } 32     //实现接口,获取家庭作业         33     public void start() 34     { 35         getHRMessage(); 36         getHR(); 37     } 38  39     /*方法实现区*/ 40     //试题方法的实现 41     public void getMs() 42     { 43         System.out.println(); 44         System.out.println("题目一:自己实现startsWith()跟endsWith()并测试"); 45         System.out.println("题目二:编写验证码生成器,最多可输入5次"); 46         System.out.println("题目三:移位实现密码加密解密器"); 47         System.out.println();     48     } 49     //第一题方法实现 50     public void home1() 51     { 52         myStartsWith(); 53         myEndsWith(); 54     } 55     //第二题方法实现 56     public void home2() 57     { 58         myABC();        //生成验证码数组 59         myCodeNumber(x,0,61);    //生成0-61之间的4个随机数 60         getMyCode();        //获得验证码 61         myCode();        //验证码5次验证 62     } 63     //第三题方法实现 64     public void home3() 65     { 66         getPassword();        //生成加密密码 67         showPassword();        //还原密码 68     } 69     //myStartsWith()的实现 70     public boolean myStartsWith() 71     { 72         String a1="dfgdagaggdsag"; 73         System.out.println("测试startsWith(),测试字符为:"+a1); 74         System.out.println("请输入字符进行判断:"); 75         Scanner scanner=new Scanner(System.in); 76         String a2=scanner.nextLine(); 77         if(!a2.equals("")&&a1.indexOf(a2)==0) 78         { 79             System.out.println("true"); 80             return true; 81         }else 82         { 83             System.out.println("false"); 84             return false; 85         } 86     } 87     //myEndsWith()的实现 88     public boolean myEndsWith() 89     { 90         String a1="dfgdagaggdsag"; 91         System.out.println("测试endsWith(),测试字符为:"+a1); 92         System.out.println("请输入字符进行判断:");     93         String a2=scanner.nextLine(); 94         if(!a2.equals("")&&a1.lastIndexOf(a2)>=0&&a1.substring(a1.length()-a2.length()).equals(a2)) 95         { 96             System.out.println("true"); 97             return true; 98         }else 99         {100             System.out.println("false");101             return false;102         }103     }104     //生成验证码数组105     public void myABC()106     {107         char b1=‘a‘;108         char b2=‘A‘;109         char b3=‘0‘;110         for(int i=0;i<a.length;i++)111         {112             if(i<=10)113             {114                 a[i]=b3;115                 b3++;116             }117             if(i>10&&i<=36)118             {119                 a[i]=b1;120                 b1++;121             }122             if(i>36)123             {124                 a[i]=b2;125                 b2++;126             }127         }128     }129     //生成不想等任意随机数方法,m是起始数值,n是结束数值,包含m,n本身130     public void myCodeNumber(int[] a,int m,int n)131     {132          Random random=new Random();133                int r;134               for(int i=0;i<a.length;i++)135              {136                     r=random.nextInt(n)+m;137                      a[i]=r;138                      for(int j=0;j<i;j++)139                    {140                          if(a[j]==a[i])141                          {  142                                i--;143                              break;144                          }145                      }146              }                        147     }148     //获得验证码149     public void getMyCode()150     {151         for(int i=0;i<x.length;i++)152         {153             for(int j=0;j<a.length;j++)154             {155                 if(x[i]==j)156                 {157                     y[i]=a[j];158                     break;159                 }160             }161             zhong+=y[i];162             System.out.print(y[i]);163         }164         System.out.println();        165     }166     //验证码验证167     public void myCode()168     {169         System.out.println("请输入图中所显示的验证码");170         String str=scanner.nextLine();171         System.out.println(zhong);    172         if(str.equals(zhong))173         {174             System.out.println("您的验证码输入正确!");175         }176         if(!str.equals(zhong)&&state<=5)177         {178             System.out.println("您的验证码输入不对,您还有"+(5-state)+"次机会!");179             state++;180             zhong="";181             myCodeNumber(x,0,61);182             getMyCode();183             myCode();        184         }185         186     }187     //接收用户输入密码并加密188     public void getPassword()189     {190         System.out.println("请输入密码:");191         password1=scanner.nextLine();192         num=new int[password1.length()];193         password2=new int[password1.length()];194         myCodeNumber(num,20,40);    //生成20--40之间的随机数    195         if(password1!=""&&password1.length()>=6)196         {197             System.out.print("加密后的密码是:");    198             for(int i=0;i<password1.length();i++)199             {200                 password2[i]=password1.charAt(i)+num[i];201                 System.out.print(password2[i]);202             }203             System.out.println();    204         }else205         {206             System.out.println("请输入合法密码!至少6位!");207             getPassword();    208         }209     }210     //解密211     public void showPassword()212     {213         System.out.print("解密后的密码是:");214         for(int i=0;i<password2.length;i++)215         {216             password3=password3+(char)(password2[i]-num[i]);217         }218         System.out.println(password3);219         System.out.println();220     }221 }    

 

0914作业