Java-生成一个10位的随机密码

获取一个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
        /*第二种循环方式
        for(Character ch : pwlist){
            str.append(ch);
        }
        */
        //jdk8的forEach循环
        pwlist.forEach(ch->{
            str.append(ch);
        });
        return str.toString();
    }
}         

有更好的解决方案也可以评论给我啦。互相学习。
(o( ̄▽ ̄)ブ)

以上。

你可能感兴趣的:(java)