【发布时间】:2014-02-12 12:38:38
【问题描述】:
我想在一个数组中生成 6 个数字,同时进行比较,这样它就不会是相同的数字或没有重复的数字。例如,我想以任意顺序生成 1-2-3-4-5-6,最重要的是不重复。所以我的想法是在生成的数组中一一比较当前数组,如果数字重复,它将重新运行该方法并再次随机化一个数字,以避免数字重复。
这是我的代码:
import javax.swing.*;
public class NonRepeat
{
public static void main(String args[])
{
int Array[] = new int [6];
int login = Integer.parseInt(JOptionPane.showInputDialog("ASD"));
while(login != 0)
{
String output="";
for(int index = 0; index<6; index++)
{
Array[index] = numGen();
for(int loop = 0; loop <6 ; loop++)
{
if(Array[index] == Array[loop])
{
Array[index] = numGen();
}
}
}
for(int index = 0; index<6; index++)
{
output += Array[index] + " ";
}
JOptionPane.showMessageDialog(null, output);
}
}
public static int numGen()
{
int random = (int)(1+Math.random()*6);
return random;
}
}
我已经考虑了 2 个小时,但仍然无法生成 6 个数字而不重复。 希望我的问题能得到解答。
顺便说一句,我是新代码,所以我只想使用for 循环或while 循环和if else 比较它。
【问题讨论】:
-
我的第一个想法是,如果你想要真正的随机数,你应该允许重复。如果您生成一个随机数,然后检查子句,将其丢弃,然后生成另一个随机数,则生成的数组将不包含完全随机数。
-
您可以将生成的数字添加到
Set中(它会自动删除重复项),直到Set的size()为6,然后将Set转换为数组使用toArray()。 -
@EricTobias 检查条款是什么意思?
-
@sp00m 我不知道 Set 是什么东西。对不起。
-
子句是一个逻辑语句。因此,检查您的数据结构是否已经包含相同的随机数将是一个子句。