| 
 
| 请各位大神帮忙改进,谢谢复制代码package cn.verification;
import java.util.Random;
import java.util.Scanner;
/*
 * 实现一个6位验证码,不能重复 ,验证码包含数字,字母大小写(不包含o和i),汉字 生成6位验证吗,输出在控制台 用户输入,判断对或错,不区分大小写
 */
/*
 * 思路: 1、用查表法,使用字符数组存储需要的字符 数字,字母,汉字 2、利用随机数,随机生成,随机数当作下标,在数组中找对应的字符
 * 3、从数组中找到字符后,将字符存储到缓冲区
 * 4、获取一个字符后,先判断缓冲区中是否存在这个字符,如果不存在,存进去,如果存在,不要这个字符,继续下一次获取随机数
 * 5、将获取到的字符,存储后,判断缓冲区长度,是6 break
 */
public class Verification {
        public static void main(String[] args) {
                input();
        }
        //接收用户输入并判断是否正确,不区分大小写
        public static void input(){
                Scanner sc = new Scanner(System.in);
                String yz = verificationCode();
                System.out.println("请输入验证码:"+yz);
                String s = sc.next();
                if(yz.equalsIgnoreCase(s)){
                        System.out.println("验证通过");
                }else{
                        System.out.println("验证码不正确");
                }
        }
        //随机生成6位验证码
        public static String verificationCode() {
                String[] str = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a",
                                "b", "c", "d", "e", "f", "g", "h", "k", "m", "Q", "W", "E",
                                "R", "T", "Y", "P", "A", "S", "D", "天", "地", "玄", "黄", "宇",
                                "宙", "洪", "荒", "日", "月" };
                Random rd = new Random();
                StringBuffer buffer = new StringBuffer();
                String s;
                int temp = 0;
                while (true) {
                        temp = rd.nextInt(str.length);
                        if (buffer.length() < 6) {
                                s = str[temp];
                                if (buffer.indexOf(s) >= 0) {
                                        continue;
                                }
                                buffer.append(s);
                        } else {
                                break;
                        }
                }
                return buffer.toString();
        }
}
 
 | 
 |