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.
现在有一个需求是要求前区和后区的数字也不重复,如果将集合对象放到方法之外创建,固然前后区数字不会重复,但也出现新的问题。尚待解决。
近期评论