我正在尝试制作一个程序,在1到20之间生成20个随机整数,然后将随机数列表打印到屏幕上。之后,我想打印一个不同的列表,屏幕上显示第一个列表中相同的数字,只跳过已经打印到屏幕上的任何数字。目前,我的代码生成从1到20的20个数字。我不知道如何打印不同的列表,只有没有重复的数字。我感谢所有提前帮助我的人!
public void randomNumbers(){
System.out.println("Twenty random integers: ");
for (int x = 0; x < 20; x++){
int max = 20; //max value for range
int min = 1; //min value for range
Random rand = new Random();
int randomNum = rand.nextInt((max - min) + 1) + min;//generates random # within range
System.out.println(randomNum);
}
System.out.println("Twenty random integers w/o duplicates: ");
}
答案 0 :(得分:2)
这是一个有趣的方法,可以一次性使用Java 8流:
Random rand = new Random();
IntStream.generate(rand::nextInt).limit(20).map(n -> n % 20 + 1)
.peek(System.out::println)
.collect(Collectors.toSet()).forEach(System.out::println);
如果您不习惯流,那么我将按如下方式翻译:
答案 1 :(得分:1)
如果您需要在没有流的情况下解决这个问题,那么一个简单的机制就是在打印时将数字添加到集合中:
Random rand = new Random();
Set<Integer> randSet = new TreeSet<>();
for (int x = 0; x < 20; x++){
int randomNum = rand.nextInt(20) + 1;
randSet.add(randomNum);
System.out.println(randomNum);
}
for (Integer randomNum: randSet) {
System.out.println(randomNum);
}