Java编写程序获取验证码

Java获取验证码

需求:

在登录注册页面中,除了用户名和密码外,通常也会包含验证码。验证码是用来区分用户是计算机还是人,防止恶意破解密码、刷票、灌水等行为。定义方法,获取一个包含4个字符的验证码,每一位字符是随机选择的字母和数字,可包含a-z,A-Z,0-9。

设计思路

查看Random、StringBuilder相关API,完成需求

代码实现1

package com.itheima.APITest.Test02;

import java.util.Random;

/*
    在登录注册页面中,
    除了用户名和密码外,通常也会包含验证码。
    验证码是用来区分用户是计算机还是人,
    防止恶意破解密码、刷票、灌水等行为。
    请查看Random、StringBuilder相关API,
    定义方法,获取一个包含4个字符的验证码,
    每一位字符是随机选择的字母和数字,可包含a-z,A-Z,0-9。例如:
 */
public class Demo {
    public static void main(String[] args) {
        //调用验证码方法
        String s = getVerificationCode();
        //输出验证码序列
        System.out.println(s);
    }

    //无参数,有返回值String类型
    public static String getVerificationCode() {
        //创建Random对象
        //public Random​()
        //创建一个新的随机数生成器。
        Random r = new Random();
        //创建StringBuilder对象
        //public StringBuilder​()
        //构造一个没有字符的字符串构建器,初始容量为16个字符。
        StringBuilder sb = new StringBuilder();
        //public int length​()
        //返回长度(字符数)。 
        while (sb.length() < 4) {
            //public int nextInt​(int bound)
            //返回伪随机数,从0(包括)和指定值(排除)之间均匀分布的int值,从该随机数生成器的序列中抽取出来。
            int random = r.nextInt(123);
            //控制随机数的范围,char类型与int类型比较时,使用的时char类型的ascii码进行比较,总之还是int类型
            if ((random > 'A' && random < 'Z') || (random > 'a' && random < 'z') || (random > '0' && random < '9')) {
                //public StringBuilder append​(char c)
                //将char参数的字符串表示附加到此序列。
                //用强制类型转换,将random的int值转成char类型
                sb.append((char) random);
            }
        }
        //public String toString​()
        //返回表示此顺序中的数据的字符串。
        String s = sb.toString();
        //返回一个String类型
        return s;
    }
}

代码实现2

package com.itheima.APITest.Test02;

import java.util.Random;

public class Demo2 {
    public static void main(String[] args) {
        //调用获取验证码的方法
        String s = getVerificationCode();
        //输出验证码
        System.out.println(s);
    }

    //定义获取验证码的方法,返回值String类型,无参数
    public static String getVerificationCode() {
        //创建StringBuilder对象,用于存放所有能获取的字符
        StringBuilder sb = new StringBuilder();
        //创建String空字符串,存放获取到的字符串
        String s = "";
        //循环获取字符A-Z,拼接到StringBuilder对象中
        for (char c = 'A'; c < 'Z'; c++) {
            sb.append(c);
        }
        //循环获取字符a-z,拼接到StringBuilder对象
        for (char c = 'a'; c < 'z'; c++) {
            sb.append(c);
        }
        //循环获取数字0-9,拼接到StringBuilder对象
        for (int i = 0; i <= 9; i++) {
            sb.append(i);
        }
        //创建Random对象,用来获取随机数
        Random r = new Random();
        //循环四次,获取四个字符验证码
        for (int i = 0; i < 4; i++) {
            //随机获取StringBuilder对象的索引
            int index = r.nextInt(sb.length());
            //public char charAt​(int index)
            //返回指定索引处的此序列中的char值。
            //将获取道德char值拼接到String对象中
            s += sb.charAt(index);
        }
        //返回字符串
        return s;
    }
}

效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l_0_f

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值