Reputation: 794
I have trouble with a quite easy task. I want to have an array from 0 to a value n with step size t, always ending with n.
Example 1: n=10, t=3, array={0, 3, 6, 9, 10}
Example 2: n=20, t=5, array={0, 5, 10, 15, 20}
Example 3: n=1, t=1, array={0, 1}
I have code which I have been using for a while, but I found out there are some weird edge cases and its quite heavy to read.
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;
}
Is there a better solution for that?
Upvotes: 1
Views: 763
Reputation: 1414
Yes there is a standard and better way to do it. It's called the step.
for(int pos = 0; pos < n; pos += t)
A for
statement is broken up into three parts:
int pos = 0
is code that is executed right before the for-loop starts.pos < n
, is a bit of code that has to return a boolean value which is checked before every loop iteration to see if the loop should keep running or stop.So technically, you can put any code you want into the three parts of the for statement, as long as the middle part returns a boolean. This allows you to increase or decrease the value by as much as you want.
Upvotes: 2