目前我发现使用
( starting index + size of array + 1 ) % size of array
将使我能够将循环数组从 0 索引到 N (数组大小 - 1 )。
目前我正在使用它从特定月份(即 6 = 七月)开始循环
months
。但问题是这种方法还会打印 0,这不是正确月份 ( 1 - 12 ) 的一部分。我知道我可以用 if else 语句来做到这一点,但如果可能的话,我只想修改 ( starting index + size of array + 1 ) % size of array
公式以适应我的需求(如果可能的话)。
如果如您所说
6 = July
那么 0 = January
和 0 实际上很可能是一个完全有效的值。
如果你的意思是说
7 = July
那么我实际上建议简单地将数组索引设置为0-11而不是1-12。当在与用户的接口和内部接口之间进行更改时,您将在基于零和基于一的索引之间进行转换。
怎么样:
starting index % size of array + 1
如果你有一个增量变量
i
并且你做了类似的事情i % N
,你将得到从0到N-1的循环值:0,1,2,...,(N-1),0, 1,2,...,(N-1)
因此,如果你想从 1 开始,你必须在结果上加 1:
(i % N) + 1
这是您想要的公式 N 是索引为 1..N 的元素数量(12 个月) n 是“当前”元素 这会生成 2 个相邻邻居的索引(从 1 开始索引),环绕两端:
( ( n-1 + N ± 1 ) % N ) + 1
(n-1) 中的 -1 和 RHS 上最后的 +1 是索引调整器