• 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本身,后面还要用,又忘记加判断长度的逻辑了...漏下的n-m加上了
    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)+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     //获得验证码,底层逻辑实现,简便方式是使用charAt()跟new String();x数组保存了4个随机数,y数组保存了4个验证码
    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     //接收用户输入密码并加密,加密方式是每个字符的char整数值加上一个随机数,最后组成一个全部是数字的字符串
    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         }else
    205         {
    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 }    
  • 相关阅读:
    微服务的优缺点及实践反思
    写在18点39分
    JDK并发包
    AI图1
    梦 周六
    高并发响应时间
    TLS~
    wait与sleep区别
    计算机领域的阿姆达尔定律(Amdahl’s law)
    看界面控件DevExpress WinForms——如何自定义辅助功能属性(下)
  • 原文地址:https://www.cnblogs.com/kaililikai/p/5875157.html
Copyright © 2020-2023  润新知