如何用Java設(shè)計(jì)一個(gè)隨機(jī)驗(yàn)證碼生成器
一、該代碼主要實(shí)現(xiàn)以下功能:
- 通過
getCode(int n)方法生成指定長度n的隨機(jī)驗(yàn)證碼 - 循環(huán)
n次,每次生成一個(gè)隨機(jī)字符 - 每次循環(huán)先隨機(jī)選擇字符類型(數(shù)字 / 大寫字母 / 小寫字母)
- 根據(jù)選擇的類型生成對應(yīng)范圍內(nèi)的隨機(jī)字符:
- 數(shù)字:0-9 之間的隨機(jī)數(shù)
- 大寫字母:A-Z 之間的隨機(jī)字母(ASCII 碼 65-90)
- 小寫字母:a-z 之間的隨機(jī)字母(ASCII 碼 97-122)
- 將生成的字符依次拼接,形成最終的驗(yàn)證碼字符串
二、實(shí)現(xiàn)以上功能的代碼如下:
package Demo;
public class TestCode {
/**
* 目標(biāo):開發(fā)驗(yàn)證碼
* 實(shí)現(xiàn)一個(gè)可以隨機(jī)生成指定位數(shù)的驗(yàn)證碼(數(shù)字、大寫字母、小寫字母)
*/
public static void main(String[] args) {
//1.調(diào)用一個(gè)方法,獲取一個(gè)指定位數(shù)的隨機(jī)驗(yàn)證碼
System.out.println(getCode(4));
System.out.println(getCode(6));
}
/**
* 生成指定長度的驗(yàn)證碼
* 驗(yàn)證碼由數(shù)字(0-9)、大寫字母(A-Z)、小寫字母(a-z)隨機(jī)組成
* @param n 驗(yàn)證碼的位數(shù),必須為正整數(shù)
* @return 生成的驗(yàn)證碼字符串
*/
public static String getCode(int n) {
//2.定義一個(gè)字符串變量,用于保存生成的驗(yàn)證碼
String code = "";
//3.循環(huán)n次,每次生成一個(gè)隨機(jī)字符
for (int i = 0; i < n; i++) {
//4.為當(dāng)前位置隨機(jī)生成一個(gè)隨機(jī)字符(0-9、A-Z、a-z)。
int index = (int)(Math.random()*3);//[0-2]
//5.使用switch語句判斷index,生成對應(yīng)的字符
// 數(shù)字0/大寫字母1/小寫字母2
switch (index) {
//6.如果當(dāng)前位置是數(shù)字,則隨機(jī)生成一個(gè)數(shù)字0-9,并將數(shù)字添加到code中
case 0:
code += (int)(Math.random()*10);//[0,9]
break;
//7.如果當(dāng)前位置是大寫字母,則隨機(jī)生成一個(gè)大寫字母A-Z,并添加到code中
case 1:
code += (char)(Math.random()*26+'A');//[0,25] 'A'=65 'Z'=65+25
break;
//8.如果當(dāng)前位置是小寫字母,則隨機(jī)生成一個(gè)小寫字母a-z,并添加到code中
case 2:
code += (char)(Math.random()*26+'a');//[0,25] 'a'=97 'z'=97+25
break;
}
}
return code;
}
}
總結(jié)
到此這篇關(guān)于如何用Java設(shè)計(jì)一個(gè)隨機(jī)驗(yàn)證碼生成器的文章就介紹到這了,更多相關(guān)Java隨機(jī)驗(yàn)證碼生成器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java 隨機(jī)生成驗(yàn)證碼(支持大小寫字母、數(shù)字、隨機(jī)字體)的實(shí)例
- java隨機(jī)驗(yàn)證碼生成實(shí)現(xiàn)實(shí)例代碼
- Java如何生成4位、6位隨機(jī)數(shù)短信驗(yàn)證碼(高效實(shí)現(xiàn))
- java 隨機(jī)生成6位短信驗(yàn)證碼實(shí)例代碼
- Java實(shí)現(xiàn)隨機(jī)驗(yàn)證碼具體代碼
- Java實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能實(shí)例代碼
- java實(shí)現(xiàn)隨機(jī)生成驗(yàn)證碼圖片
- java實(shí)現(xiàn)隨機(jī)驗(yàn)證碼圖片生成
- java如何生成登錄隨機(jī)驗(yàn)證碼
- Java 實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能簡單實(shí)例
相關(guān)文章
springboot+thymeleaf國際化之LocaleResolver接口的示例
本篇文章主要介紹了springboot+thymeleaf國際化之LocaleResolver的示例 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
java讀取圖片并轉(zhuǎn)化為二進(jìn)制字符串的實(shí)現(xiàn)方法
這篇文章主要介紹了java讀取圖片并轉(zhuǎn)化為二進(jìn)制字符串的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09
java開發(fā)分布式服務(wù)框架Dubbo調(diào)用過程
這篇文章主要為大家介紹了java開發(fā)分布式服務(wù)框架Dubbo調(diào)用過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2021-11-11
SpringBoot+Docker+Graylog 如何讓錯(cuò)誤自動(dòng)報(bào)警
SpringBoot默認(rèn)使用SLF4J與Logback,支持多日志級別和配置方式,可輸出到控制臺、文件及遠(yuǎn)程服務(wù)器,集成ELK/Graylog實(shí)現(xiàn)集中監(jiān)控與錯(cuò)誤報(bào)警,本文給大家介紹SpringBoot+Docker+Graylog 如何讓錯(cuò)誤自動(dòng)報(bào)警,感興趣的朋友一起看看吧2025-07-07
Java實(shí)現(xiàn)excel大數(shù)據(jù)量導(dǎo)入
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)excel大數(shù)據(jù)量導(dǎo)入,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
eclipse中自動(dòng)生成javadoc文檔的方法
這篇文章主要介紹了eclipse中自動(dòng)生成javadoc文檔的方法,是實(shí)用eclipse開發(fā)Java程序時(shí)非常實(shí)用的技巧,對于進(jìn)行Java項(xiàng)目開發(fā)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12

