DESKTOP-9M8MO52_20200905-周俊

一,问题

这是关于大乐透随机数的一个思路

1.

考试的时候没注意到要随机数不重复,之后才知道,做的时候觉得没那么容易。如果单纯用逻辑判断来使数字不重复是非常糟糕的。想到

了有的集合元素不能重复,于是就百度了下集合的用法,明白了。

public class Number {
    
    Random random=new Random();
    
    public void test(int r,int s) {//前一个参数限制随机数的范围,后一个参数是元素的个数
        Set<String> set=new HashSet<String>();//创建集合对象,元素类型是String
        while (true) {
            int a=random.nextInt(r)+1;
            if (a<10) {//如果数字小于10就加个0,确保数字是两位
                set.add("0"+a);
            }else {
                set.add(a+"");//确保元素是String类型
            }
            if (set.size()==s) {//如果集合元素个数够了就跳出
                break;
            }
        }
        System.out.println(set);
    }
    
    public static void main(String[] args) {
        
        Number n=new Number();
        n.test(34, 5);
        n.test(12, 2);
    }

}

2.

之前的感觉是拿到一个编程题,无从下手。现在做了一些题目后,大概能有个思路,先把类的结构写出来,之后该创建对象创建对象,写

方法的写方法,一步步能知道自己往下应该干什么(先不管会与不会)。

因为输出格式是中括号包住的,找找其他输出方法,可以用增强for循环或者Iterator迭代器进行输出。

for (String string : set) {
        System.out.print(string+" ");
    }

Iterator<String> iterator=set.iterator();
    while (iterator.hasNext()) {
        String string = (String) iterator.next();
        System.out.print(string+" ");
    }

3.

现在有一个需求是要求前区和后区的数字也不重复,如果将集合对象放到方法之外创建,固然前后区数字不会重复,但也出现新的问题。尚待解决。

二,吐槽