最近在看网上的自学资料,我觉得有几个有意思的点记录下来
一个是生成随机的验证码。包括但不局限于字母数字。主要是伪随机
最开始写这个是看到一个案例,登录获取验证码。于是想到以后可能会用上所以简单动手写一下。
这一段代码主要是这样考虑的
随机生成三种验证的验证码,可以能是纯数字,可能是计算,可能是字母数字混搭。
不过这里面主要是想把这个类写成工具包。所以增加了构造方法私有化(private CAPTCHA)。此类无法通过创建实例重写内部方法,同时保证了功能性。
不过这段代码可以进一步优化,把生成不同类型的代码分出来写成一个单一的内部方法。然后通过create调用统一返回一个指定格/位数的验证码,明天优化。
public class CAPTCHA {
private CAPTCHA(){}
static String create(){
final String STR = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random ra = new Random();
int ram =ra.nextInt(7);
char Code[]=new char[6];
boolean bool;
switch (ram) {
case 1:
for (int i = 0; i < 4; i++) {
ram = ra.nextInt(52);
Code[i] = STR.charAt(ram);
}break;
case 2:
for (int i = 0; i < 6; i++) {
ram = ra.nextInt(52);
Code[i] =STR.charAt(ram);
}break;
case 3:
for (int i = 0; i < 4; i++) {
ram = ra.nextInt(62);
Code[i] = STR.charAt(ram);
}break;
case 4:
for (int i = 0; i < 6; i++) {
ram = ra.nextInt(62);
Code[i] = STR.charAt(ram);
}break;
case 5:
for (int i = 0; i < 4; i++) {
ram = ra.nextInt(10) + 51;
Code[i] = STR.charAt(ram);
}break;
case 6:
for (int i = 0; i < 6; i++) {
ram = ra.nextInt(10) + 51;
Code[i] = STR.charAt(ram);
}break;
default:
ram = ra.nextInt(4);
bool = false;
switch (ram) {
case 1:
ram = ra.nextInt(10) + 52;
Code[0] = STR.charAt(ram);
Code[1] = '+';
ram = ra.nextInt(10) + 52;
Code[2] = STR.charAt(ram);
break;
case 2:
ram = ra.nextInt(10) + 52;
Code[0] = STR.charAt(ram);
Code[1] = '-';
ram = ra.nextInt(10) + 52;
Code[2] =STR.charAt(ram);
int a = Code[0];
Code[0] = (char) (a < Code[2] ? Code[2] : a);
if (Code[0] == Code[2]) {
Code[2] = (char) a;
break;
}
case 3:
ram = ra.nextInt(10) + 52;
Code[0] = STR.charAt(ram);
Code[1] = 'x';
ram = ra.nextInt(10) + 52;
Code[2] = STR.charAt(ram);
break;
default:
ram = ra.nextInt(10) + 52;
Code[0] = STR.charAt(ram);
Code[1] = '÷';
ram = ra.nextInt(10) + 52;
Code[2] =STR.charAt(ram);
int b = Code[0];
Code[0] = (char) (b < (int) Code[2] ? (int) Code[2] : b);
if (Code[0] == Code[2]) {
Code[2] = (char) b ;
break;
}
break;
}
break;
}
String s1="";
for (int i = 0; i < 6; i++) {
s1=s1+Code[i];
}return s1;}
}