接连不断创建新元素

时间:2019-02-28 09:52:03

标签: java arraylist

比方说,我在数组[10, 20, 30]中已有元素,并且我希望用户输入一个元素,例如。用户输入元素4,所以我希望输出变得像这样[10, 4, 20, 4, 30]

但是我只能设法让用户输入10次元素(如我的数组大小),但我只希望输入一次。

我不知道如何将大小为10的“ score.size()”更改为一个元素,因此我可以像这样[10, 4, 20, 4, 30]获得输出。

这是我的一些编码:

ArrayList<Double> score = new ArrayList<Double>();

// (here I already set some elements in the array)

for (int i = 1; i <= score.size(); i += 2)
{ 
    System.out.println("Enter the element you want to add: ");
    double addedElement = in.nextDouble();

    score.add(i, addedElement);
}
System.out.println(score);

2 个答案:

答案 0 :(得分:0)

请勿在循环中使用score.size(),因为在循环中添加元素时,其大小会增加。而是将大小存储在本地变量中,然后将该变量用于循环中的条件。

更改如下:

        int n = score.size();
        for (int i = 0; i < n-1; i ++) {

            System.out.println("Enter the element you want to add: ");
            Double addedElement = in.nextDouble();

            score.add(2*i+1, addedElement);
        }

此代码将要求您为每次迭代提供一个数字。因此,如果您已有[10,20,30]数组,并输入95作为输入。然后,您将得到输出为[10,9,20,5,30]

如果只想输入一个数字,则只需将输入行移动到循环之前即可。

        int n = score.size();
        System.out.println("Enter the element you want to add: ");
        Double addedElement = in.nextDouble();
        for (int i = 0; i < n-1; i ++) {
            score.add(2*i+1, addedElement);
        }

因此,如果输入现有[10,20,30]数组,则输入9作为输入。然后,您将得到输出为[10,9,20,9,30]

答案 1 :(得分:0)

首先,这是应该执行Seelenvirtuose所说的代码。

List<Double> score = new ArrayList<Double>();

//Add the initial stuff
score.add((double)10);
score.add((double)20);
score.add((double)30);

//Get the input from the user
Scanner in = new Scanner(System.in);

System.out.println("Enter the number: ");
double d = in.nextDouble();

in.close();

//Loop through the list and add the input to the correct places
for(int i = 1; i < score.size(); i+= 2)
    score.add(i, d);

System.out.println(score);`

score.size()返回列表中的元素数量,因此在您的示例情况下,列表最初包含10、20和30,则您的循环

for (int i = 1; i <= score.size(); i += 2)
{ 
System.out.println("Enter the element you want to add: ");
double addedElement = in.nextDouble();

score.add(i, addedElement); 
}

是这样的:

  1. i = 1,score.size()==3。用户输入一个数字,并将其添加到列表中的第1位(10到20之间)。我+ = 2。

  2. i == 3,score.size()==4。用户输入另一个数字,然后转到第3位(20到30之间)。我+ = 2。

  3. i == 5,score.size()==5。用户输入另一个数字,然后转到第5位(30位之后)。我+ = 2。

  4. i == 7,score.size()==6。循环结束。

更改score.size()的方法是添加或删除元素。在您的示例案例中,它永远不应转到10。希望这有助于理解。

最后,如果您是Java的新手,则请注意,即使数组(例如double [])和列表(例如ArrayList)的用途也很不同,即使它们用于相似的目的。如果您不知道,可能要用Google搜索它们的区别。