Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ArrayList,循环和必要的,如果不能工作,我想要的-Java 11_Java_List_Loops_If Statement_Arraylist - Fatal编程技术网

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()