如何实现指定轮次及间隔轮次触发代码的循环?
解决方案
首先得明确循环变量i和实际轮次的对应关系,分两种情况调整判断逻辑:
如果
i=0对应第1轮、i=1对应第2轮,那触发轮次对应的i值是1、6、11...,条件可以这么写:int triggerTurn = 1; // 对应第2轮 for (int i = 0; i < turns; i++) { if ((i - triggerTurn) >= 0 && (i - triggerTurn) % 5 == 0) { // 目标代码 } }如果
i直接等于轮次编号(比如i=2就是第2轮),逻辑更直接:int triggerTurn = 2; for (int i = 0; i < turns; i++) { if ((i - triggerTurn) >= 0 && (i - triggerTurn) % 5 == 0) { // 目标代码 } }
你原代码里triggerTurn + 5 * i % ???的思路行不通,因为i是循环计数器,每轮都会递增,这样计算的数值和轮次本身没有对应关系。换成上面的逻辑,就能精准匹配第2轮、第7轮、第12轮这类间隔5轮的触发节点。
也可以把判断拆成更直观的形式,效果完全一致:
int triggerTurn = 2; for (int i = 0; i < turns; i++) { if (i == triggerTurn || (i > triggerTurn && (i - triggerTurn) % 5 == 0)) { // 目标代码 } }
内容的提问来源于stack exchange,提问作者Majs
相关产品推荐
相关产品推荐

