实现随机验证码

Java实现随机验证码的生成

随机验证码:

法一:普通方法

核心逻辑:

  • 1.定义一个String类型的变量存储验证码字符。
  • 2.定义一个for循环,循环n次(n为验证码的所需要字符的个数)。
  • 3.随机生成三个数字依次表示:大写字母、小写字母、数字。并使用switch语句判断。
  • 4.把生成的数字给switch判断并生成对应的随机字符,把字符交给String变量。
  • 5.循环结束后,返回String类型的变量。

代码展示:


//1.定义一个方法返回一个随机验证码:String
public static String creatCode(int n) {

    //2.循环n次,依次生成随机字符
    String code = "";
    Random random = new Random();
    for (int i = 0; i < n; i++) {
        //3.生成一个随机字符:英文 大写 小写 数字(0 1 2)
        int type = random.nextInt(3);
        switch (type) {
            case 0:
                //大写 (65 ~ 65+25) = (0 ~ 25)+65
                char ch = (char) (random.nextInt(26) + 65);
                code += ch;
                break;
            case 1:
                //小写 (0 ~ 25) + 97
                char ch1 = (char) (random.nextInt(26) + 97);
                code += ch1;
                break;
            case 2:
                //数字
                code += random.nextInt(10); // 0 ~ 9
                break;
        }
    }
    return code;
}

法二:

核心逻辑:String类方法

  • 1.定义一个String类型变量存储a~z A~Z 0~9之间的全部字符。
  • 2.循环5次,随机一个范围内的索引,获取对应字符连接起来即可。

代码展示:

//1.定义可能出现的字符信息
        String data = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

        //2.循环5次,每次生成一个随机的索引,提取对应的字符连接起来即可
        Random random = new Random();
        String code = "";
        for (int i = 0; i < 5; i++) {
            //随机一个索引
            int index = random.nextInt(data.length());
            char c = data.charAt(index);
            code += c;
        }
        //3.输出字符串变量
        System.out.println(code);

代码核心逻辑来自黑马案例

Original: https://www.cnblogs.com/zhangyouren/p/16401918.html
Author: Haziy
Title: 实现随机验证码

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/574443/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • SpringMvc的Url映射和传参案例(转)

    Springmvc的基本使用,包括url映射、参数映射、页面跳转、ajax和文件上传 以前学习的时候写的代码案例,今天整理笔记的时候找到了,很久没有来园子了,发上来当个在线笔记用吧…

    Java 2023年5月30日
    079
  • 随机生成数组+冒泡排序

    示例如下: public class MaoPaoPaiXu { public static int[] mp(int[] nums) { for (int i = 0; i &l…

    Java 2023年6月6日
    0110
  • 【Android】线程池原理及Java简单实现

    线程池简介 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为: T1 创建线程…

    Java 2023年5月29日
    071
  • springcloud feign配置

    feign: httpclient: # feign最大连接数 max-connections: 200 # feign单个路径的最大连接数 max-connections-per…

    Java 2023年5月30日
    0103
  • 没那么简单的单例模式

    作者:小牛呼噜噜 | https://xiaoniuhululu.com计算机内功、JAVA底层、面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 什么是单例 单例的应用场景 单…

    Java 2023年6月15日
    065
  • springboot成功启动后访问controller层报404的问题

    可以看看是不是mybatis依赖版本的问题,可以修改版本后试一试, – 但这都是仅仅供参考 Original: https://www.cnblogs.com/hxbh…

    Java 2023年6月6日
    081
  • 好书推荐之《码出高效》、《阿里巴巴JAVA开发手册》

    好评如潮 《阿里巴巴Java开发手册》 简介 《阿里巴巴Java开发手册》的愿景是码出高效,码出质量。它结合作者的开发经验和架构历程,提炼阿里巴巴集团技术团队的集体编程经验和软件设…

    Java 2023年6月15日
    085
  • android游戏妄撮java源码

    采用css+js实现 ==代码说明 index.html 程序加载运行的第一个页面,也是整个程序的入口 其它.html页面 程序中其它不同页面的内容信息界面 icon.png 用于…

    Java 2023年5月29日
    061
  • C语言实现一个走迷宫小游戏(深度优先算法)

    补充一下,先前文章末尾给出的下载链接的完整代码含有部分C++的语法(使用Dev-C++并且文件扩展名为.cpp的没有影响),如果有的朋友使用的语言标准是VC6的话可能不支持,所以在…

    Java 2023年6月8日
    0104
  • OpenLDAP 服务端配置(二): 允许用户自行修改密码

    修改slapd.conf文件(默认安装在/etc/openldap下) 2.slapd.conf文件在database config前面加上两个字段 slapd.conf配置文件末…

    Java 2023年5月30日
    063
  • Spring Cloud 微服务优雅下线 + 灰度发布的正确姿势,写得太好了!

    前言 在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。如果在我们升级服务的时候,会造成一段时间内的服务不可用,这就是不够优雅的。那什么是优雅的呢…

    Java 2023年6月15日
    097
  • SpringBoot 源码解析 (二)—– Spring Boot精髓:启动流程源码分析

    本文从源代码的角度来看看Spring Boot的启动过程到底是怎么样的,为何以往纷繁复杂的配置到如今可以这么简便。 入口类 @SpringBootApplication publi…

    Java 2023年5月29日
    067
  • 判断一个链表是否为回文序列

    判断一个链表是否为回文序列 问题重述: 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: &amp…

    Java 2023年6月7日
    098
  • 使用certbot制作免费Lets encrypt SSL证书

    利用 certbot软件包可以免费制作SSL证书 这对小网站和测试项目太有用了,下面记录一下制作证书的流程和方法。以备后用。以centos7系统为例 其他系统类似。 yum ins…

    Java 2023年6月16日
    0125
  • 140_SpringBoot案例-fanout发布订阅模式

    整体核心 目标 实现步骤 生产者 创建生产者工程:springboot-rabbitmq-fanout-producer 在pom.xml中引入依赖 在application.ym…

    Java 2023年6月7日
    099
  • MyBatis

    == 1、#{}和${}的区别:== (1) #{}是参数占位符,MyBatis会将SQL中的#{}替换为 ?, 实际参数值替换 在SQL运行前会使用 PreparedStatem…

    Java 2023年6月5日
    061
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球