Java:生成从1到n的数组,步长

Java: Generate array from 1 to n with step size

我无法完成一项非常简单的任务。我想要一个从 0 到值 n 的数组,步长为 t,总是以 n 结尾。

示例 1: n=10, t=3, 数组={0, 3, 6, 9, 10}

示例 2: n=20, t=5, 数组={0, 5, 10, 15, 20}

示例 3: n=1, t=1, 数组={0, 1}

我的代码已经使用了一段时间,但我发现其中有一些奇怪的边缘情况,而且阅读起来非常繁重。

int numOfElements = (int)(Math.ceil(n/2.0)+1);
int[] array = new int[numOfElements];

for(int pos=0; pos < numOfElements; pos++) {
    int val = t*pos;
    val = Math.min(val, n);
    array[pos] = val;
}

有更好的解决方案吗?

是的,有一个标准的更好的方法来做到这一点。这就是所谓的步骤。

for(int pos = 0; pos < n; pos += t)

一条for语句分为三个部分:

  1. 第一部分 int pos = 0 是在 for-loop 开始之前执行的代码。
  2. 第二部分 pos < n 是一段代码,必须 return 一个布尔值,在每次循环迭代之前检查该值以确定循环是否应保持 运行或停止。
  3. 第三部分是每次循环迭代后执行的一些代码。

所以从技术上讲,您可以将任何代码放入 for 语句的三个部分,只要中间部分 return 是布尔值即可。这允许您根据需要增加或减少值。