获取一个10位的随机密码,包含3个大写字母,3个小写字母,3个数字,1个‘@’
一、思路:
1.得到一个list。该list里包含3个大写字母,3个小写字母,3个数字,1个‘@’。
2.乱序。使用Collections.shuffle(list); 将list里的元素打乱顺序。
3.循环遍历,输出。3种for循环都列在代码中啦。
二、衍生的值得思考的问题(对我来说),了解的路过大佬们可以评论给我哈哈:
1.对象和变量的区别。
2.Character和char的区别。
3.什么情况下用Character。
4.StringBuffer和Stringbuilder的区别。
三、具体实现
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
/**
* 输出一个10位的随机密码,包含3三个大写字母,3个小写字母,3三个数字,1个@,使用ASCII码。
* @author Sally.L
*
*/
public class Password {
public static void main(String[] args) {
System.out.println("The Random Pwd is:"+getRandomPwd());
}
public static String getRandomPwd() { //static修饰,可以不用创建对象,直接使用该方法。
Random r=new Random();
ArrayList<Character> pwlist=new ArrayList<Character>();
for(int i=0;i<10;i++) {
if(i<3) {
//依次生成3个数字,放在list里
char num=(char) (48+r.nextInt(10)); //ASCII码十进制代码48-57代表数字0-9
pwlist.add(num);
}else if(i<6) {
//依次生成3个大写字母,放在list里
char upper=(char) (65+r.nextInt(26)); //ASCII码十进制代码65-90代表大写字母A-Z
pwlist.add(upper);
}else if(i<9) {
//依次生成3个小写字母,放在list里
char lower=(char) (97+r.nextInt(26)); //ASCII码十进制代码97-122代表小写字母a-z
pwlist.add(lower);
}else {
//最后一位生成‘@’,放在list里
pwlist.add((char)(64)); //ASCII码十进制代码64代表‘@’
}
}
//乱序
Collections.shuffle(pwlist);
StringBuilder str=new StringBuilder();
//将Char类型的List,循环遍历,最后以String类型输出
/*第一种循环方式
for(int i=0;i<pwlist.size();i++) {
Character ch=pwlist.get(i);
str.append(ch);
}
*/
/*第二种循环方式
for(Character ch : pwlist){
str.append(ch);
}
*/
//jdk8的forEach循环
pwlist.forEach(ch->{
str.append(ch);
});
return str.toString();
}
}
有更好的解决方案也可以评论给我啦。互相学习。
(o( ̄▽ ̄)ブ)
以上。
版权声明:本文为taimafanle121原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。