黑马程序员技术交流社区

标题: 生成随机验证码 [打印本页]

作者: li--yong    时间: 2016-8-11 23:44
标题: 生成随机验证码
import java.util.Random;

public class T {

        public static void main(String[] args) {
                String verift = getVerify();
                System.out.println(verift);
        }

        /**
         * 随机生成验证码
         *
         * @return
         */
        public static String getVerify() {

                char[] all = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
                                'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
                                'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
                                'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
                                'V', 'W', 'X', 'Y', 'Z' };

                Random random = new Random();
                String s = "";
                for (int i = 0; i < 4; i++) {
                        char r = all[random.nextInt(all.length)];
                        s+=r;
                }

                return s;
               
        }
}
作者: 晓寒轻    时间: 2016-8-15 23:25
不错,继续加油
作者: x55555lg    时间: 2016-8-17 22:25
顶一个,支持一下
作者: talons    时间: 2016-8-17 23:31
想了下用正则生成,但是感觉好像不行,正则一般用于判断。然后用随机数产生合法的ascii码值来生成。通过一个随机数控制该位是大写字母、小写字母还是数字,
没有使用先生成ascii码再提取有效字符以提高效率。
[Java] 纯文本查看 复制代码
package demos;

import java.util.Random;

/*
生成随机的四位验证码:0-9,a-z,A-Z
*/
public class Demo3 {
        public static final int NUM = 4;

        public static void main(String[] args) {
                for (int i = 1; i <= 100; i++) {
                        System.out.print(getVerify() + "  ");
                        if (i % 10 == 0) {
                                System.out.println();
                        }
                }
        }

        public static String getVerify() {
                String rs = "";
                Random ascii = new Random();
                for (int i = 0; i < NUM; i++) {
                        int judge = ascii.nextInt(90) + 1;
                        if (judge <= 30) {
                                rs += (char) (ascii.nextInt(10) + 48);
                        } else if (judge <= 60) {
                                rs += (char) (ascii.nextInt(26) + 65);
                        } else {
                                rs += (char) (ascii.nextInt(26) + 97);
                        }
                }
                return rs;
        }
}

作者: 龙旋    时间: 2016-8-17 23:33
66666666666666666
作者: 1344667911    时间: 2016-8-17 23:39
继续加油..........




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2