ArrayList,循环和必要的,如果不能工作,我想要的-Java 11
我在比较列表中的数字时遇到了一个问题,这样它就不会使用随机变量重复。我希望这些数字是随机的,但只有那些不在列表中的才能被添加 这是我的密码:ArrayList,循环和必要的,如果不能工作,我想要的-Java 11,java,list,loops,if-statement,arraylist,Java,List,Loops,If Statement,Arraylist,我在比较列表中的数字时遇到了一个问题,这样它就不会使用随机变量重复。我希望这些数字是随机的,但只有那些不在列表中的才能被添加 这是我的密码: private void addToListNumber() { int randomPosition = new Random().nextInt(5); int maxPosition = 5; if (list.size() < 1) { list.add(1); addToL
private void addToListNumber() {
int randomPosition = new Random().nextInt(5);
int maxPosition = 5;
if (list.size() < 1) {
list.add(1);
addToListNumber();
} else if (list.size() < maxPosition) {
for (Integer integer : list) {
if (integer == randomPosition) {
addToListNumber();
}
}
list.add(randomPosition);
addToListNumber();
} else {
for (Integer integer : list) {
System.out.println(integer);
}
}
}
private void addToListNumber(){
int randomPosition=new Random().nextInt(5);
int maxPosition=5;
if(list.size()<1){
增加第(1)款;
addToListNumber();
}else if(list.size()
这些数字是重复的。如果我正确理解了你的问题,你正在试图建立一个由5个整数组成的随机顺序列表 一个简单的方法是生成一个有序的数字列表,然后随机交换它们 首先创建您的有序编号列表
public List createOrderedList(整数大小){
列表=新的ArrayList();
对于(int i=0;i
然后创建一个方法,在给定索引的情况下交换列表中的两个元素
公共无效交换(列表、int i、int j){
整数保持=list.get(i);
list.set(i,list.get(j));
列表。设置(j,保持);
}
最后,创建一个混合所有这些元素的方法
公共无效组合(列表){
随机=新随机();
对于(int i=0;i
按以下顺序调用方法:
List List=createOrderedList(5);
混合(列表);
对于(int i=0;i
发生这种情况是因为递归调用addToListNumber()。为了使它简单和简短,让我假设maxPosition=3
首先,将1添加到列表中。然后假设randomPosition=2,将2添加到列表中并调用addToListNumber()。现在假设randomPosition=1,然后在比较integer==randomPosition时再次调用addToListNumber()(您只比较了这里的第一个元素,它匹配了)
现在插入randomPosition=3和3。由于这是一个递归调用,因此在返回为randomPosition=1调用的addToListNumber()时(在前一种情况下),列表没有结束(列表有{1,2,3}),并且只比较了第一个元素。在循环结束时,它再次插入1,您的列表变为{1,2,3,1},因此重复 我在这里没有看到任何试图防止重复数字的代码。不清楚你想做什么。好的,谢谢,我修正了我的代码。我使用布尔运算,它在这里工作是我固定的``if(list.size()