【问题标题】:How to store this pattern in Java arraylist?如何将此模式存储在 Java 数组列表中?
【发布时间】:2020-07-11 15:43:26
【问题描述】:

我想将下面的数组模式存储在 List 中,我不明白如何实现它,因为它具有交替增量。

  1. 将数字增加 399。
  2. 递增 1

并继续上述 2 个步骤以获得一定长度的数字。 如果有人可以用简单的 OOP 概念指导我的逻辑

0, 400, 401, 800, 801, 1200, 1201, 1600, 1601, 2000

【问题讨论】:

  • 你试过什么?似乎您只需要每次通过循环交替增量即可。
  • 我写过要通过 399 来实现,但是怎么交替是我想不到的
  • 你的列表不应该是0、399、400、799、800...吗?否则,您将增加 400,然后增加 1。
  • 似乎您是编程新手,如果属实,我想每个人都会同意您应该自己试一试,而不是在 Stack Overflow 上要求它。最后,如果您自己没有找到解决方案,您可以在 Google 上搜索交替系列,看看它是如何完成的。
  • 您将如何替代 IRL?您可能会记得您在上一次迭代中交替使用的内容,并根据您上次所做的切换到另一个。

标签: java arrays arraylist collections


【解决方案1】:

你也可以这样做:

//add the first item outside of the loop, so that you can access the previous item within it
list.add(1)

//loop through the list in increments of 2
for (int i = 1; i < length; i += 2) {
   list.add(list.get(i - 1) + 399);
   list.add(list.get(i) + 1);
}

【讨论】:

    【解决方案2】:

    想通了,这就是我现在写的,它起作用了

    int pages = 8;
    
        List<Integer> numArray = new ArrayList<Integer>();
        
        numArray.add(0);
    
        boolean incrementFlag = false;
        int i = 400;
        for (int j = 0; j < (pages-1); j++) {
    
            numArray.add(i);
            if (incrementFlag)
                i += 399;
            else
                i += 1;
    
            incrementFlag = !incrementFlag;
    
        }
    

    【讨论】:

    • 为什么要加到i
    • 很高兴您找到了解决方案。该标志是多余的;你可以只使用增量值作为标志,因为你可以检查它的值,但这是一个实现细节。您也可以使用三元操作来选择要添加的值,但这是另一个次要的实现细节。干得好。
    猜你喜欢
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2012-07-20
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多