我是Java的新手,我想生成一个长度为'number'的随机(x,y)坐标数组,它不包含重复项.可以重复x或y值,但必须没有重复的(x,y)坐标.输出不必是Points,只是某种方式来保持坐标的x,y值.
我可以生成一个随机点数组,并尝试使用Set来确保没有重复值,但遇到了问题.我尝试使用条件"while(set.size)"和应该禁止重复的'add'方法,以创建包含唯一点的正确大小的输出.
这是代码:
Set<Point> set = new HashSet<Point>();
Random position = new Random();
Point test=new Point();
do{
test.x=position.nextInt(xx);
test.y=position.nextInt(yy);
//xx and yy are the random number limits called from another part of the code
set.add(test);
}
while (set.size()<number);
List<Object> list = new ArrayList<Object>(set);
Object[] coord = list.toArray();
Run Code Online (Sandbox Code Playgroud)
这会输出一个正确长度的数组,但每个元素都是相同的.有人可以提供任何帮助吗?
谢谢
每次循环时,测试指向空间中的相同变量,以修复在循环内创建新实例 - 不仅仅是在它之前一次:
Set<Point> set = new HashSet<Point>();
Random position = new Random();
Point test;
do{
test = new Point();
test.x=position.nextInt(xx);
test.y=position.nextInt(yy);
//xx and yy are the random number limits called from another part of the code
set.add(test);
}
while (set.size()<number);
List<Object> list = new ArrayList<Object>(set);
Object[] coord = list.toArray();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6070 次 |
最近记录: |