要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9) 也不相同,每个字符串长度为10;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
 * 要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)
 * 也不相同,每个字符串长度为10;
 * 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判断生成的字符串是否包含重复,
 * 在判断长度是不是10,等等.
 * 2.其实这题我们可以培养一个习惯,大问题分解小问题解决.
 * (1).10个字符串,我们先产生一个10个字符不重复的字符串,
 * (2).怎么去重复呢?集合中的HashSet就可以,这题不适合用包含方法做,代码复杂
 * (3).字符组成是由(a-zA-Z0-9) 难道我们在随机他们的码表一一判断吗?-------->可以把们放到一
 * 个容器中ArrayList
 * 在集合的随机索引
 */
public class Demo1 {

    public static void main(String[] args) {
        List<Character> al = new ArrayList<Character>();
        Set<Character> hs = new HashSet<Character>();
        Set<String> hs2 = new HashSet<String>();
        // 把(a-zA-Z0-9)放进集合中
        for (char i = 'a'; i <= 'z'; i++) {
            al.add(i);
        }
        for (char i = 'A'; i <= 'Z'; i++) {
            al.add(i);
        }
        for (char i = '0'; i <= '9'; i++) {
            al.add(i);
        }
        while (true) {
            hs.clear();//内循环走完,把存储字符的set清零
            while (true) {
                int a = (int) (Math.random() * al.size());
                //随机下标拿到字符,把字符放进set中保证了字符是唯一的
                hs.add(al.get(a));
                //当set中有10个数据时,把10个数据打印出来,然后转成字符串存放到另一个set中,跳出循环
                if (hs.size() == 10) {
                    for (char c : hs) {
                        System.out.print(c);
                    }
                    String s = hs.toString();
                    hs2.add(s);
                    break;
                }
            }
            System.out.println();
            //当存放字符串的set有10个数据时,跳出循环
            if (hs2.size() == 10) {
                break;
            }
        }
    }
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值