gpt4 book ai didi

java - 非重复随机数数组 Java,for/do/while 循环

转载 作者:行者123 更新时间:2023-12-01 18:23:31 26 4
gpt4 key购买 nike

嘿,大家好,我需要有关我正在从事的这个项目的帮助,我想限制我使用 for 循环和 do/while 循环的内容。我已经为此工作了一段时间,但我仍然对自己正在做的事情感到困惑。这是我到目前为止所拥有的。

public class Array2
{

public static void main(String[] args)
{
int[] array1= new int[10];
int x=0;
int num=0;
do
{
for(int i=0; i<array1.length; i++)
{
int j= 2 + (int)(Math.random() * (99-1));
if(i==0)
{
array1[i]=j;
}
else
{
if(j==array1[i-1])
{
x++;

}
else
array1[i]=j;
}
System.out.println(array1[i]);
num++;

}
}while(x==0&&num<array1.length);


}

我知道这段代码不起作用,我正在寻找一个解决方案,以便当 x 设置为 1 时,它只是将 j 设置为一个不同的随机数,并再次检查它是否是重复数字。我还想知道如何检查 j 是否有重复数字,而不是执行 if(j==array1[i-1] 因为它只检查前一个数组槽。请帮忙!

编辑:我现在的主要问题是如何检查 j 是否等于 array1 中的任何数字,现在我有 if(j==array1[i-1]) 但只检查前一个插槽。谢谢

最佳答案

如果您只是想解决您的主要问题以生成 10 的序列1 之间的不同数字和100 ,使用 Java 8,不要重新发明轮子

final Collection<Integer> intList = IntStream.rangeClosed(1, 100) // generate an infinite list of numbers between 1 and 100
.distinct() // avoid duplicates in that list
.limit(10) // take only 10 numbers from that list
.boxed() // cast them to Integer
.collect(Collectors.toList()); // collect them in a Collection<Integer>

如果它仍然是一个数组,则添加此行:

Integer[] intArray = intList.toArray(new Integer[intList.size()]);

添加

如果您想要一个解决方案,不像上面的示例那么简单,但可能更容易掌握,请考虑一下:

1:只生成一个包含1到100的数字的列表,因此每个数字只有一次。

final List<Integer> baseIntegers = new ArrayList<>(100);
for (int i = 0; i < 100; i++) {
baseIntegers.add(i + 1); // to get 1 to 100
}

您应该做的第二件事是打乱列表,以便获得它们的随机顺序。

Collections.shuffle(baseIntegers);

最后一步是仅获取您需要的元素数量,在您的情况下为 10:

final int numbersToExtract = 10;
final int[] finalArray = new int[numbersToExtract];
for (int i = 0; i < numbersToExtract; i++) {
finalArray[i] = baseIntegers.get(i);
}

关于java - 非重复随机数数组 Java,for/do/while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26960158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com