JAVA-小白入门小程序-验证码生成(JAVA控制台)

JAVA-小白入门小程序-验证码生成(JAVA控制台)

一回生,二回熟。带上自己的小程序,我又来啦!(如有不足,谢谢大家提出建议)

验证码效果:

在这里插入图片描述在这里插入图片描述在这里插入图片描述
该小程序主要用到的是Java.uilt.Random类实现

Random:

Random类位于java.util包下,此类的实例用于生成伪随机数流。Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。(此句来自其他博主,简单的来说Random类就是用来获取随机数的)

Random中用到的方法:
nextInt(int bound)//获取随机数(参数为给予的最大取值范围)

从该随机数生成器的序列绘制。 nextInt的一般合同是指定范围内的int值被伪随机生成并返回。

分析:

验证码:一般由大小写字母与数字,组合生成。
所以我们需要思考如何随机获取这些字母或者数字,这时我们就会想到随机数,但随机数怎么获取字母呢?,那我们学编程这一行必不可少的会了解的ASCII码,我们通过ASCII码可以把特定区域的整型数转换成字符型,再把字符组成字符串就生成了验证码。

ASCII码:

48-57(数字0-9)
65-90(大写字母A-Z)
97-122(小写字母a-z)
其他对应点击:
ASCII码

特别讲解:

nextInt(max - min +1)+min //为获取最小min到最大max的随机数
因nextInt()只能设置最大取值范围(0 ~ (max-1))(即正整数且不能等于最大值)
其中(max - min +1)是为可获得最大值max后面的+min为随机数最小范围(因nextInt()最小值为0)

代码:

package com.softeem.example13;

import java.util.Random;

public class Exp06 {

	Random r = new Random();
	/**
	 * 获得数字
	 * @return
	 */
	public char getNumber() {
		int math = r.nextInt(57 - 48 + 1)+48;
		//因要进行拼接所以需强转为char类型
		return (char)math;
	}
	/**
	 * 获得大写字母
	 * @return
	 */
	public char getBigChar() {
		int math = r.nextInt(90 - 65 + 1)+65;
		return (char)math ;
	}
	/**
	 * 获得小写字母
	 * @return
	 */
	public char getLittleChar() {
		int math = r.nextInt(122 - 97 + 1)+ 97;
		return (char)math;
	}
	/**
	 * 设置概率,获取字符(数字,大小写字母)
	 * @return
	 */
	public char getRandomChar() {
		int math = r.nextInt(9);
		if( math <= 2) {
			return getNumber();
		}else if( math <= 5){
			return getBigChar();
		}else {
			return getLittleChar();
		}
	}
	/**
	 * 获得指定数量的验证码
	 * @param number
	 * @return
	 */
	public String getCode(int number) {
		char []c = new char[number];
		for (int i = 0; i < number; i++) {
			c[i] = getRandomChar();
		}
		//String类中的构造器可把字符数组转换为字符串
		String code = new String(c);
		return code;
	}
	public static void main(String[] args) {
		Exp06 exp = new Exp06();
		System.out.println(exp.getCode(4));
		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值