Java如何生成4位、6位随机数短信验证码(高效实现)

 更新时间:2022年12月29日 10:44:28   作者:liberg  
这篇文章主要介绍了Java如何生成4位、6位随机数短信验证码(高效实现),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Java生成4位、6位随机数短信验证码

生成短信验证码问题,本质是产生某个范围内随机数的问题。

比如,要生成6位短信验证码xxxxxx:

  • 6位数最大到999999;
  • 同时为了防止位数少于6位,导致高位补0的麻烦和尴尬,我们可以特别规定,最小值为最小的6位数,即100000;

这样问题就变成了:产生[100000, 999999]范围内的随机数的问题。

Java随机数

由于Java中Random对象的nextInt(n)方法产生的是[0, n-1)范围内的随机数。

因此要产生[m, n]范围内的随机数就是: m + randObj.nextInt(n-m+1)

参考代码

Random randObj = new Random();
// 生成6位随机验证码
public String generateCode() {
    return Integer.toString(100000 + randObj.nextInt(900000));
}
// 生成4位随机验证码
public String generateCode4() {
    return Integer.toString(1000 + randObj.nextInt(9000));
}

Java随机位数的验证码的生成

生活中的验证码随处可见,尤其是在登录账号密码时,使用的尤为多。掌握这个方法无论对学习还是工作都是很有帮助的。

思路整理

生成由数字、大写字母和小写字母随机组成的字符串。

1.我们需要创建一个方法,在方法内实现随机字母的生成,方便调用。

2.由于要生成的验证码的位数不确定,可能是4位,5位,6位。因此我们需要使用for循环语句,

进一步思考由于存在三种状态,数字+大写字母+小写字母。判断这三种状态,最好的方法是使用switch。

3.我们在生成随机数字或字符时需要使用random的一个方法,不了解random的同学可以去菜鸟教程或博客上搜索,它从属于Math,这里使用的是random中的 .nextInt()方法。

代码部分:

关于验证码位数,修改n即可。

不仔细的同学注意可能出现的报错情况

1.类名取用Random 导致出错,修改类名即可。

2.code += ch;即是  code = code + ch;

3.A对应的ACll 码为65  a对应的为97;

4.注意int 和 String 之间的强转;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot结合JWT实现用户登录、注册、鉴权

    SpringBoot结合JWT实现用户登录、注册、鉴权

    用户登录、注册及鉴权是我们基本所有系统必备的,也是很核心重要的一块,本文主要介绍了SpringBoot结合JWT实现用户登录、注册、鉴权,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2023-05-05
  • java内部类原理与用法详解

    java内部类原理与用法详解

    这篇文章主要介绍了java内部类原理与用法,结合实例形式分析了Java内部类的概念、原理、分类及相关使用技巧,需要的朋友可以参考下
    2019-05-05
  • Java通俗易懂讲解泛型

    Java通俗易懂讲解泛型

    在正式进入内容之前说明一下:泛型的内容太多,也太复杂。这里因为Java中写数据结构的时候会使用到,所以加上。关于泛型我找了挺多文章,再结合自己的理解,尽可能将其讲清楚。不求会使用泛型,只要求后面数据结构出现泛型的时候能够知道是在干什么即可
    2022-05-05
  • mybatis空值插入处理的解决方法

    mybatis空值插入处理的解决方法

    本文主要介绍了mybatis空值插入处理的解决方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • SWT(JFace)体验之Icon任我变

    SWT(JFace)体验之Icon任我变

    SWT(JFace)体验之Icon任我变
    2009-06-06
  • java多线程编程之线程的生命周期

    java多线程编程之线程的生命周期

    线程要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。下面给出了Thread类中和这四种状态相关的方法
    2014-01-01
  • Spring获取管理对象常用方法详解

    Spring获取管理对象常用方法详解

    这篇文章主要介绍了Spring获取管理对象常用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Java日期时间类(Date、DateFormat、Calendar)解析

    Java日期时间类(Date、DateFormat、Calendar)解析

    这篇文章主要介绍了Java日期时间类(Date、DateFormat、Calendar)解析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • Java自定义一个变长数组的思路与代码

    Java自定义一个变长数组的思路与代码

    有时我们希望将把数据保存在单个连续的数组中,以便快速、便捷地访问数据,但这需要调整数组大小或者对其扩展,下面这篇文章主要给大家介绍了关于Java自定义一个变长数组的思路与代码,需要的朋友可以参考下
    2022-12-12
  • 详解Java线程池和Executor原理的分析

    详解Java线程池和Executor原理的分析

    这篇文章主要介绍了详解Java线程池和Executor原理的分析的相关资料,这里提供实例及分析原理帮助大家理解这部分知识,需要的朋友可以参考下
    2017-07-07

最新评论