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
语句分为三个部分:
- 第一部分
int pos = 0
是在 for-loop 开始之前执行的代码。
- 第二部分
pos < n
是一段代码,必须 return 一个布尔值,在每次循环迭代之前检查该值以确定循环是否应保持 运行或停止。
- 第三部分是每次循环迭代后执行的一些代码。
所以从技术上讲,您可以将任何代码放入 for 语句的三个部分,只要中间部分 return 是布尔值即可。这允许您根据需要增加或减少值。
我无法完成一项非常简单的任务。我想要一个从 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
语句分为三个部分:
- 第一部分
int pos = 0
是在 for-loop 开始之前执行的代码。 - 第二部分
pos < n
是一段代码,必须 return 一个布尔值,在每次循环迭代之前检查该值以确定循环是否应保持 运行或停止。 - 第三部分是每次循环迭代后执行的一些代码。
所以从技术上讲,您可以将任何代码放入 for 语句的三个部分,只要中间部分 return 是布尔值即可。这允许您根据需要增加或减少值。