Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 20个数字的列表,每个数字生成1-100,如何不重复?_Java - Fatal编程技术网

Java 20个数字的列表,每个数字生成1-100,如何不重复?

Java 20个数字的列表,每个数字生成1-100,如何不重复?,java,Java,我已经看过很多其他人了,我仍然不知道如何在下面的代码中输入不重复的代码。这里的新手,需要有人解释 import java.util.Random; class random{ public static void main(String[] args) { Random dice = new Random(); int number; for (int counter = 1; counter <= 20; counter++) { number

我已经看过很多其他人了,我仍然不知道如何在下面的代码中输入不重复的代码。这里的新手,需要有人解释

import java.util.Random;

class random{
public static void main(String[] args) {
    Random dice = new Random();
    int number;
    for (int counter = 1; counter <= 20; counter++) {
        number = 1 + dice.nextInt(100);
        System.out.println(number + " ");
    }
}
import java.util.Random;
类随机{
公共静态void main(字符串[]args){
随机骰子=新随机();
整数;

for(int counter=1;counter不只是打印随机数,而是有一个集合(只允许唯一元素)来捕获数字,并有一个if条件来检查集合的长度(set.size()=20)退出循环,然后运行for循环以查找随机数。我认为这将解决您的问题。

首先将随机数添加到一个集合中,这将停止重复条目。然后循环并打印出集合。有几种不同的方法可以做到这一点,但这里有一种方法可以让您的c更改最少颂歌:

Set<Integer> numbers = new HashSet<Integer>();
Random dice = new Random();
int number;
for (int counter = 1; counter <= 20;) {
    number = 1 + dice.nextInt(100);
    if(numbers.add(number)) { //Only increment the counter if the number wasn't already in the set
        counter++;
    }
}
for(Integer num : numbers) {
    System.out.println(num + " ");
}
Set number=new HashSet();
随机骰子=新随机();
整数;

对于(int counter=1;counter跟踪以前生成的内容。请尝试以下操作

public static void main(String...args) {
        Random dice = new Random();
        Set<Integer> previouslyGenerated = new  HashSet<Integer>();
        int number = 0,counter = 0;      
        while (counter <20){
            number = 1+dice.nextInt(100);
            if (!previouslyGenerated.contains(number)){
                previouslyGenerated.add(number);
                System.out.println(number + " ");
                counter++;
            }       

        }       

}
publicstaticvoidmain(字符串…参数){
随机骰子=新随机();
Set previouslyGenerated=新HashSet();
整数=0,计数器=0;

而(计数器比MrMadsen建议的简单一点的方法是控制设置的大小:

Set<Integer> numbers = new LinkedHashSet<>();
Random dice = new Random();
while(numbers.size() < 20)
    numbers.add(dice.nextInt(100)+1);
for(Integer num : numbers) {
    System.out.println(num + " ");
}

您好,欢迎来到StackOverFlow(SO)。请花一分钟的时间阅读,并根据本文中提到的规范编辑您当前的帖子。谢谢,编码愉快。开始很好,但if number=counter;行不是Java。您能在帖子中添加一个“other”的示例吗你看了一些你不理解的例子?如果我们看到你试图添加的内容和你的实际尝试,这将对我们有很大帮助。事实上,很难对你在这里发布的内容给出好的建议。将生成的数字添加到列表中。一旦使用随机生成器生成,如果该数字已经存在,则生成另一个r数字。继续这样做,直到生成一个不存在的数字。然后继续生成下一个数字。这听起来很复杂,但您会惊讶地发现,使用Random.nextInt()重复的可能性会降低。的可能重复
new Random().ints(1, 101).distinct().limit(20).forEach(System.out::println);