当前位置: 首页 > news >正文

生成指定长度的随机验证码,并让用户输入验证码进行验证:

整体程序设计 思路
延续「功能拆分 + 循环验证」的核心架构:
1.把「生成验证码」「验证验证码」拆分为独立方法,主方法仅负责流程调度,保证代码职责清晰、易维护;
采用 while(true) 无限循环实现「验证不通过则重新生成验证码」的逻辑,只有验证通过时才通过 break 退出循环。
2. 主方法(main)执行逻辑
作为程序入口,控制整体交互流程,步骤如下:① 创建 Scanner 对象:用于读取控制台的用户输入;② 启动无限循环:
调用 code(4) 方法生成 4 位随机验证码,打印到控制台供用户查看;
通过 sc.next() 获取用户输入的验证码字符串 coDe1;
调用 judge 方法,传入系统生成的验证码和用户输入的验证码,判断是否一致;
若 judge 返回 true(验证通过),执行 break 跳出循环,程序结束;若返回 false,循环重新执行,生成新的验证码继续验证。
3. 验证码生成方法(code)
目标:生成包含「小写字母 + 大写字母 + 数字」的 n 位随机字符串(示例中 n=4),具体步骤:① 定义空字符串 cd:用于拼接最终生成的验证码;② 定义字符池 all:包含所有可选字符(a-z 小写字母、A-Z 大写字母、0-9 数字),作为随机选取的数据源;③ 创建 Random 对象:用于生成随机索引,保证验证码的随机性;④ 循环 n 次(生成 n 位验证码):
生成随机索引:r.nextInt(all.length()),范围是 0 到 all.length()-1,确保索引不会超出字符池的边界;
根据索引取字符:all.charAt(index) 从字符池中取出对应位置的字符;
拼接字符:将取出的字符追加到 cd 中;⑤ 返回拼接完成的验证码字符串 cd。
4. 验证码验证方法(judge)
核心优化点:忽略大小写验证,具体逻辑:① 接收两个参数:code(系统生成的原始验证码)、cd(用户输入的验证码);② 使用 String 的 equalsIgnoreCase() 方法对比:该方法会忽略字符的大小写(比如 A 和 a 视为相同),逐字符对比两个字符串的内容;③ 返回布尔值:内容一致(忽略大小写)则返回 true,不一致则返回 false。
代码:

package com.study.demo;

import java.util.Random;
import java.util.Scanner;

public class Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true){
String code = code(4);//随机生成验证码
System.out.println("验证码:"+code);
String coDe1 = sc.next();

Boolean judge = judge(code, coDe1);//判断验证码是否一致
if (judge){//返回true结束循环
break;
}
}
}
//判断验证码是否正确
public static Boolean judge(String code, String cd){
if (cd.equalsIgnoreCase(code)){//正确返回true 否则就是false
return true;
}
return false;
}

//随机验证码
public static String code(int n){
//定义变量接收随机验证码
String cd="";
//定义全部可能出现的字符数字
String all="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
//创建随机数对象
Random r = new Random();
for (int i = 0; i < n; i++) {
int index = r.nextInt(all.length());//获取随机数范围 并返回随机后的数字
char c = all.charAt(index);//根据返回的索引获取当前位置的字符
cd += c;//追加验证码
}
return cd;
}

http://www.jsqmd.com/news/578354/

相关文章:

  • 《学习Java的第十一天》
  • 在项目管理的过程中,如何自动分配资源作为任务负责人?
  • SEO_避开常见误区,正确理解SEO的核心价值(127 )
  • FA-XGBoost数据分类预测:基于交叉验证的参数优化Matlab代码
  • GLM-4.1V-9B-Base多场景:教育题图解析、法律文书图示理解、科研图表解读
  • 人流后生殖健康修护:科学方案与行业洞察
  • docker挂载vscode之后的打开步骤
  • React状态管理新范式:3种方案对比与选型建议
  • 利用快马平台快速构建node.js express api原型,十分钟搭建可运行后端服务
  • 新手避坑指南:用Selenium和MongoDB爬取东方财富股吧评论(附完整代码)
  • 利用快马平台快速构建openclaw本地部署原型,十分钟搞定环境配置
  • 1.QQ退出后,浏览器仍然能打开空间?2.它是用什么语言开发的?
  • 基于Matlab的自适应信号滤波降噪:心音信号处理之旅
  • AI深度学习中的张量的类型转换
  • 2026年 北京保密资质认定推荐榜单:一级/二级科研生产保密资格,专业高效合规认证服务公司精选 - 品牌企业推荐师(官方)
  • 互联网大厂Java求职面试丨技术点全覆盖的面试问答实战
  • 技术赋能B端拓客:号码核验行业的迭代与价值升级氪迹科技法人股东号码筛选系统,阶梯式价格
  • Claude Code代码泄露第二天,Anthropic 把最骚的功能悄悄上线了。
  • 智谱 GLM-5.1 正式发布:华为芯片训练的开源模型编码能力达 Claude Opus 4.6 的 94.6%
  • ESP芯片全流程烧录利器:esptool开源工具高效应用指南
  • 新手零基础入门:利用快马平台交互式学习Python库安装与初体验
  • 商城小程序开发公司哪家值得选:五大平台深度对比 - 企业数字化改造和转型
  • Go微服务缓存策略:4种方案解决热点数据击穿问题
  • 终极Figma中文插件实战指南:三步实现设计界面全汉化
  • 从配准到生成:扩散模型如何革新医学图像跨模态转换
  • 深度解析RePKG架构:从Wallpaper Engine资源解包到TEX格式转换实战指南
  • 空间多组学解决方案发展提速:未来六年CAGR锁定15.3%,行业增长预期持续向好
  • Video DownloadHelper伴侣应用:3步解锁全网视频下载的终极方案
  • 从零学网络安全 - CTF真题解析 2020-网鼎杯-青龙组-Web-AreUSerialz
  • seo网站推广免费方法有哪些