1. 程式人生 > 實用技巧 >Java 生成任意長度的驗證碼過程解析

Java 生成任意長度的驗證碼過程解析

需求說明

1、要求生成任意長度的驗證碼

2、驗證碼要求包含大小寫英文字母和數字

實現方式

採用隨機數的方式,分別在數字,大小寫英文字母裡面抽取字元,抽取次數由for迴圈控制

程式碼內容

隨機的方法及程式入口

package com.work.work3;

/**
 * @auther::9527
 * @Description: 驗證碼生成器
 * @program: shi_yong
 * @create: 2019-07-30 20:45
 */
public class Method {
  //採用char對照表生成驗證碼
  public static String verCode1(int num) {
    String code = ""; //設定一個變數,用來接收驗證碼
    for (int i = 0; i < num; i++) {
      //使用一個布林變數,判定單個驗證碼是數字還是英文字母
      boolean choose = ((int) (Math.random() * 2) == 0) ? true : false;
      if (choose) {
        //如果choose為真,則選取數字做單個驗證碼並連線到code裡面
        code += (int) (Math.random() * 10); //在0-9之間選擇一個數字做驗證碼
      } else {
        //如果choose為假,則選取英文字母做單個驗證碼並連線到code裡面
        //用char對照表裡面的序號,確認本次英文字母是採用大寫還是小寫,
        // 65是大寫英文字母開頭,97是小寫英文字母開頭
        int temp = ((int) (Math.random() * 2) == 0) ?65:97;
        char ch = (char)((Math.random()*26)+temp);
        code += ch;
      }
    }
    //返回一個字串
    return code;
  }

  public static String verCode2(int num){
    String code="";
    //採用變數string接收所有0-9,a-z,A-Z的字元
    String string = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    //將字串拆分成字串陣列
    String[] str= string.split("");
    for (int i = 0; i <num ; i++) {
      //在數組裡面用下標隨機出字串
      code += str[(int)(Math.random()*str.length)];
    }
    return code;
  }

  public static void main(String[] args) {
    System.out.println("對照表法:"+Method.verCode1(6));
    System.out.println("split分割字串法:"+Method.verCode2(6));

  }
}

執行結果

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援碼農教程。