首页 > 其他分享 >23.text--生成验证码

23.text--生成验证码

时间:2023-04-12 11:02:15浏览次数:37  
标签:23 -- text 验证码 char 小写字母 letterArr

生成验证码

内容:可以是小写字母,也可以是大写字母,还可以是数字
规则:长度为5,内容是四位字母,一位数字,其中数字只有1位,但是可以出现在任意位置

public static void main(String[] args) {
    //创建含有大小写字母的数组
    char[] letterArr = new char[52];
    //小写字母在ASCII码表里是从97开始的,大写字母是65开始的
    for (int i = 0; i < letterArr.length; i++) {
        if(i <= 25){
            letterArr[i] = (char)(97 + i);
        }else{
            letterArr[i] = (char)(65 + i - 26);
        }
    }
    String result = randomArr(letterArr);
    System.out.println(result);

}

//生成随机验证码
public static String randomArr(char[] arr){
    //定义一个新的空字符数组,存放五位随机字母
    char[] result = new char[5];
    Random r = new Random();

    for (int i = 0; i < result.length; i++) {
        int randomIndex = r.nextInt(arr.length);
        //遍历新随机字母数组,判断新随机字母在数组中是否存在
        for (int i1 = 0; i1 < result.length; i1++) {
            //若不存在,则存入数组
            if(result[i1] != arr[randomIndex]){
                result[i] = arr[randomIndex];
            }
        }
    }
    String str = randomNum(result);
    return str;
}

//数字随机出现
public static String randomNum(char[] arr){
    Random r = new Random();
    int randomIndex = r.nextInt(arr.length);
    //在已经完成的五位随机字母数组中,将其中随机索引的一个字母替换成数字
    //在ASCII码表中,数字0是从48开始的
    int ranNum = r.nextInt(10) + 48;
    //通过强转,直接赋给随机索引的位置
    arr[randomIndex] = (char)ranNum;

    return new String(arr);
}

标签:23,--,text,验证码,char,小写字母,letterArr
From: https://www.cnblogs.com/Zz1001/p/17309050.html

相关文章

  • 22.text--调整字符串
    调整字符串给定两个字符串,A和BA的旋转操作就是将A最左边的字符移动到最右边例如:若A="abcde",在移动一次之后结果就是"bcdea"如果在若干次调整操作之后,A能变成B,那么返回True如果不能匹配成功,则返回falsepublicstaticvoidmain(String[]args){StringA="abcde";......
  • PAT Basic 1088. 三人行
    PATBasic1088.三人行1.题目描述:子曰:“三人行,必有我师焉。择其善者而从之,其不善者而改之。”本题给定甲、乙、丙三个人的能力值关系为:甲的能力值确定是2位正整数;把甲的能力值的2个数字调换位置就是乙的能力值;甲乙两人能力差是丙的能力值的X倍;乙的能力值是丙的Y倍。......
  • nop指令多字节占位
    在动态调试过程中,有时候要给一个地址进行nop.(nop代表无意义指令,可以被cpu执行.执行之后不会影响寄存器,堆栈,以及寄存器)nop的机器码是0x90而在后面的调试器中,针对nop指令又作了"升级"以前想要nop五个字节.那就要写五个字节.现在有种新的方式(通过逆向的来.发现的多了......
  • Python爬虫之循环爬取多个网页
    之前的文中介绍了如何获取给定网址的网页信息,并解析其中的内容。本篇将更进一步,根据给定网址获取并解析给定网址及其相关联网址中的内容。要实现这些功能,我们需要解决以下问题:1、如何持续不断的获取url,并读取相关内容。2、如何判断网址是否已经读取过。文中用到的代码均已上传......
  • nodejs连接mysql数据库
      https://www.cnblogs.com/hechunfeng/p/17308654.html这个是安装数据库   1.我们先建一个表和插入一下字段,这些都是自己弄的    2.安装npminstallmysqlconst{createPool}=require('mysql');constpool=createPool({host:"localhost",......
  • 3、Markdown 换行语法
    Markdown换行语法在一行的末尾添加两个或多个空格,然后按回车键,即可创建一个换行(<br>)。Markdown语法HTML预览效果Thisisthefirstline.Andthisisthesecondline.<p>Thisisthefirstline.<br>Andthisisthesecondline.</p>Thisisthefirstline......
  • 结对编程——四则运算
    目录一、实验目的二、实验方法三、实验内容四、实验代码五、实验结果六、实验心得 一、实验目的体验结对编程,两人合力完成一个编程(队友2152231)。二、实验方法两人使用一台机器,使用VisualStudio2019进行编程,一个人输入代码,而另一个人审查他输入的每一行代码,在进行角......
  • 网页单位为(rem)时,js控制自适应字体大小
    //js部分:屏幕大小决定根元素字体大小(functionflexible(window,document){functionresetFontSize(){constsize=(document.documentElement.clientWidth/1920)*16;//1920为设计稿宽度if(document.documentElement.clientWidth>1920){doc......
  • vue属性之监听属性(watch)
    目录简介语法示例简介当一个变量的值发生变化时,执行对应的函数语法#在属性中添加watch属性,并以需要监听变量的名字进行定义函数data:{show:'abc'}watch:{show(){我是函数内容}}示例<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8">......
  • centos编译安装tcpdump
    环境CentOSLinuxrelease7.9.2009(Core)准备安装包libpcap-1.5.3.tar.gztcpdump-4.9.2.tar.gz下载地址:https://www.tcpdump.org/release/开始安装安装libpcap[root@localhost~]#tarzxvflibpcap-1.5.3.tar.gz[root@localhost~]#cdlibpcap-1.5.3[root@localhost......