【问题标题】:How do I get a list of five random numbers to be printed without duplicates in Java?java - 如何在Java中获得要打印的五个随机数的列表而不重复?
【发布时间】:2014-02-07 03:02:09
【问题描述】:

我正在尝试根据用户提供的特定范围打印五个从不重复的随机数。下面发布的是我到目前为止的代码。首先,我不知道如何列出在 ArrayList 中找到的数字,或者即使我应该使用 ArrayList 而不是一个 Array。有什么想法吗?

package h1p2;
import java.util.ArrayList;

public class test{
    public void method (int min, int max){
        //Declare and initialize arrays and index variables
        ArrayList<Integer> rangeOne = new ArrayList<Integer>();
        ArrayList<Integer> rangeMinMax = new ArrayList<Integer>();

        int z = min;
        int i = 0;
        int q = 0;
        //int rangeLength = rangeMinMax.length;

        //need minimum/max differential of 50 or > to execute method
        if (max - min < 50){
            System.out.println("Please enter numbers with a differential of 50 or greater.");
        }

        //run if differential checks out
        else{
            while (z <= max && z >= min ){
                rangeMinMax.set(z, 1);
                i++;    
            }
        }

        while (q < 5){
            int randomNumber = (int)(rangeMinMax.size() * Math.random());
            if (randomNumber == rangeOne.indexOf(0)|| randomNumber == rangeOne.indexOf(1) || 
                    randomNumber == rangeOne.indexOf(2) || randomNumber == rangeOne.indexOf(3) ||
                    randomNumber == rangeOne.indexOf(4) || randomNumber == rangeOne.indexOf(5)){
                break;
            }

            else{
                rangeOne.set(q, randomNumber);
            }

            q++;
        }
        System.out.println("The numbers are " + )
    }
}

【问题讨论】:

  • 查看SET。我有一个答案here 可能会对您有所帮助。
  • 谢谢@Takendarkk,我注意到你使用了“rand.nextInt(51)”。有没有办法可以指定构造函数指定的范围而不是 51?

标签: java arrays arraylist


【解决方案1】:

正如 Takendarkk 所说,set 很有用。

// First check that min, max are valid and far enough apart
Set<Integer> set = new HashSet<>();
Random r = new Random();
while (set.size() < 5) {
    set.add(min + r.nextInt(max - min + 1));
}
System.out.println("Your numbers are: " + set);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 2021-03-18
    • 2021-12-27
    相关资源
    最近更新 更多