为了账号安全,请及时绑定邮箱和手机立即绑定

一个接一个地创建新元素

一个接一个地创建新元素

富国沪深 2022-07-14 16:36:55
假设我的数组中有现有元素,[10, 20, 30]我希望用户输入一个元素,例如。用户输入元素4,所以我希望输出变成这样[10, 4, 20, 4, 30]。但我只设法让用户输入元素 10 次(比如我的数组大小),但我只想输入一次。我不知道如何将“ score.size()”,即大小为 10,只有一个元素,所以我可以得到这样的输出[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 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

不要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]你输入9和5作为输入。然后你会得到输出为[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].


查看完整回答
反对 回复 2022-07-14
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

首先,这是应该执行 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)是非常不同的东西,即使它们用于相似的目的。如果您不知道,您可能想用谷歌搜索他们的差异。


查看完整回答
反对 回复 2022-07-14
  • 2 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信