java 随机数生成验证码每行加注释

要求:

生成验证码
 * 内容:可以是小写字母,也可以是大写字母,还可以是数字
 * 规则:长度为5
 * 内容中是四位字母,1位数字。
 * 其中数字只有1位,但是可以出现在任意的位置。 

package stringtext;

import java.util.Arrays;
import java.util.Random;

/**
 * 生成验证码
 * 内容:可以是小写字母,也可以是大写字母,还可以是数字
 * 规则:长度为5
 * 内容中是四位字母,1位数字。
 * 其中数字只有1位,但是可以出现在任意的位置。
 */
public class VerificationCode {
    public static void main(String[] args) {
        Random ra = new Random();
        //定义一个char类型数组来存储验证码每个字符
        char[] arr=new char[5];
        //定义一个int 类型的数组表示验证码字符下标
        int[] index=new int[5];
        //循环随机生成字符下标0~4不重复的5个数
        for (int j = 0; j <index.length ; ) {
            //生成0~4的数
            int num2 =ra.nextInt(5);
            //标记 默认为true
            boolean boo=true;
            for (int i = 0; i <j ;i++ ) {
                //if判断数组里已有的数是否和本次添加数相等
                if (index[i] == num2) {
                    //当程序进到这里的时候 说明数组里有 本次添加数把标记改为false
                    boo=false;
                    //直接结束内层循环
                    break;
                }
            }
            //当程序到这里时boo标记是true 说明数组里没有本次添加数的数
            if (boo ) {
                //那么就把本次添加数的数到数组中
                index[j] = num2;
                //只有当数组添加成功的时候j才作++
                //如果将j++写在for()里面无论数组里是否有相等的数j都会做++运算
                // 当生成到和数组里相同的数时改下标的数不会被赋值,那么数组里会出先多个0(int类型默认值是0)
                j++;
            }
        }
        for (int i = 0; i < arr.length-1; ) {
            //char类型的a-Z的Ascii码值范围转为int类型是 65-90 97-122
            int num1= ra.nextInt(78)+65;
            //判断随机数上次的数字是否在范围
            if (num1>=65 && num1<90 || num1>=97 && num1<=122) {
                //将生成的数字强转为char并存在arr数组中
                arr[index[i]]=(char) num1;
                i++;
            }

        }
        //随机数生成0-9的数
        int num1= ra.nextInt(9)+48;
        //将index数组数据类型是int index[arr.length-1]获取到的也是int类型也可以作为下标
        //而index里的值是随机数所以 index[arr.length-1]获取到的是0-5不确定的数
        arr[index[arr.length-1]]=(char) num1;
        //声明一个变量
        String verification="";
        for (int i = 0; i < arr.length; i++) {
            //将arr每个元素存储到verification当中
            verification +=arr[i];
        }
        System.out.println(verification);
    }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值