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)截取出抽取的字符