穷举法&在给定一组字符中随机抽取字符的方法

1. 生成一个长度是3的 随机字符串 ,把这个字符串作为当做密码

2. 使用穷举法生成长度是3个字符串,匹配上述生成的密码


public class TestString {
 
     public static void main(String[] args) {
 
         String password = randomString(3); //生成随机密码
         System.out.println("密码是:" + password);
 
         char[] guessPassword = new char[3];
         outloop:
         for (short i = '0'; i <= 'z'; i++) { // 字符型可以赋给整形,储存的是ASCII值
             for (short j = '0'; j <= 'z'; j++) {
                 for (short k = '0'; k <= 'z'; k++) {
                     if (!isLetterOrDigit(i,j,k)) // 判断是否为数字或者字母
                         continue;
                     guessPassword[0] = (char) i;
                     guessPassword[1] = (char) j;
                     guessPassword[2] = (char) k;
                     String guess = new String(guessPassword); //一种利用字符构造字符串方式
                     
                     if(guess.equals(password)){
                         System.out.println("找到了,密码是" + guess);
                         break outloop;
                     }
                     
                 }
             }
         }
     }
     
     private static boolean isLetterOrDigit(short i, short j, short k) {
         return Character.isLetterOrDigit(i) && // character对象自带的静态方法
                 Character.isLetterOrDigit(j) &&
                 Character.isLetterOrDigit(k) ;
     }
 
     private static String randomString(int length) { //在一些列字符中,随机抽几个数的方法
         String pool = "";
         for (short i = '0'; i <= '9'; i++) {
             pool += (char) i;
         }
         for (short i = 'a'; i <= 'z'; i++) {
             pool += (char) i;
         }
         for (short i = 'A'; i <= 'Z'; i++) {
             pool += (char) i;
         }
         char cs[] = new char[length];
         for (int i = 0; i < cs.length; i++) {
            int index = (int) (Math.random() * pool.length()); //这里一定要把int后面的也加括号
             cs[i] = pool.charAt(index);
         }
         String result = new String(cs);
         return result;
     }
}

//在一些列字符中随机抽几个字符的方法:
(1) 把这些字符粘贴成一个字符串
(2) Math.random() * 字符串的长度 // Math.radom()产生大于等于0小于1的随机数,再乘以字符串的长度,即可产生0-字符串长度-1 的数字,而恰巧对应 index(0-length-1)
(3) 利用 String的静态方法 charAt(index)截取出抽取的字符


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值