43-Java编程案例三:验证码

案例三:验证码

在这里插入图片描述

  • 需求:

    • 实现随机产生一个5位的验证码,每位可能是数字、大写字母、小写字母
  • 分析:

    • 定义一个生成验证码的方法verifyCode,方法参数是位数、方法的返回值类型是String
    • 在方法内部使用循环生成指定位数的随机字符,并连接起来
    • 把连接好的随机字符作为一组验证码进行返回
  • 实现:

  1. 定义一个生成验证码的方法verifyCode,设置一个形参:int n(验证码位数),返回值类型是String
  2. 定义一个空字符串,用于接收生成的随机字符
  3. 创建一个随机数对象,用于生成随机字符
  4. 定义一个for循环,循环n次,依次生成随机字符:英文大写、小写,数字
  5. 生成一个随机字符,范围是3:0 1 2,定义变量接收这个随机字符
  6. 使用switch分支判断这个生成的随机字符:
     如果随机字符是0:则生成一个英文大写字符
     大写字符:A~Z
     (1) A的ascii码是65,由于英文字母有26个,A已经是1个了,所以 Z可以表示为65+25
     (2) 减加法:65 - 65+25 == (0 - 25) + 65

     如果随机字符是1:则生成一个英文小写字符
     小写字符:a~z
     (1) a的ascii码是97,由于英文字母有26个,a已经是1个了,所以 z可以表示为97+25
     (2) 减加法:97 - 97+25 == (0 - 25) + 97

     如果随机字符是2:则生成一个数字
     0~9

  7. 返回这组验证码
  8. 调用方法,传递一个任意正整数给形参:int n,生成验证码
package com.app.demo;

import java.util.Random;

/**
    案例三:验证码
     - 需求:
        - 实现随机产生一个5位的验证码,每位可能是数字、大写字母、小写字母
     - 分析:
         - 定义一个生成验证码的方法verifyCode,方法参数是位数、方法的返回值类型是String
         - 在方法内部使用循环生成指定位数的随机字符,并连接起来
         - 把连接好的随机字符作为一组验证码进行返回
 */
public class Test3 {
    public static void main(String[] args) {
        // 8. 调用方法,传递一个任意正整数给形参:int n,生成验证码
        String code = verifyCode(5);
        System.out.println("验证码: " + code);
    }

    // 1. 定义一个生成验证码的方法verifyCode,设置一个形参:int n(验证码位数),返回值类型是String
    public static String verifyCode(int n) {
        // 2. 定义一个空字符串,用于接收生成的随机字符
        String code = "";

        // 3. 创建一个随机数对象,用于生成随机字符
        Random rd = new Random();

        // 4. 定义一个for循环,循环n次,依次生成随机字符:英文大写、小写,数字
        for (int i = 0; i < n; i++) {
            // i = 0 1 2 3 4

            // 5. 生成一个随机字符,范围是3:0 1 2,定义变量接收这个随机字符
            int type = rd.nextInt(3);   // 0 1 2

            // 6. 使用switch分支判断这个生成的随机字符:
            switch (type) {
                // 如果随机字符是0:则生成一个英文大写字符
                case 0:
                    /*
                        大写字符:A~Z
                        (1) A的ascii码是65,由于英文字母有26个,A已经是1个了,所以 Z可以表示为65+25
                        (2) 减加法:65 - 65+25 == (0 - 25) + 65
                     */
                    // 要的是英文大写字符,所以需要用char变量来接收,char接收int类型的,属于小 接 大,需要强制转换类型
                    char ch = (char) (rd.nextInt(26) + 65);
                    // 将生成的随机字符拼接起来
                    code += ch;
                    break;
                // 如果随机字符是1:则生成一个英文小写字符
                case 1:
                    /*
                        小写字符:a~z
                        (1) a的ascii码是97,由于英文字母有26个,a已经是1个了,所以 z可以表示为97+25
                        (2) 减加法:97 - 97+25 == (0 - 25) + 97
                     */
                    // 要的是英文小写字符,所以需要用char变量来接收,char接收int类型的,属于小 接 大,需要强制转换类型
                    char ch1 = (char) (rd.nextInt(26) + 97);
                    // 将生成的随机字符拼接起来
                    code += ch1;
                    break;
                // 如果随机字符是2:则生成一个数字
                case 2:
                    // 0 - 9
                    // 将生成的随机数字拼接起来
                    code += rd.nextInt(10);
                    break;
            }
        }

        // 7. 返回这组验证码
        return code;
    }
}
输出结果:

验证码: 6PIL4

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值