嵌套For循环异常:内层循环无法逐次计数问题求助
问题修复方案
你的问题出在内层的小时计数循环——每次外层循环执行时,这个内层循环会一次性跑完所有次数,直接把water变量设成了raceTime的最终值(比如你看到的6),所以每次输出都是最后一个小时数。
根本不需要嵌套循环,直接用一个单独的变量跟踪小时数就行。修改后的代码如下:
const waterRec = waterStorageRec(totalWaterToDrink); //TODO now need to plan out refill strategy based on SAGS and water drank each time //TODO for water refill strategy, need to turn it into function or something that only gets called if water to consumer exceeds water stored at start of race console.log(`-----WATER REFILL STRATEGY-----`); let waterHourFinal = waterPerHour(raceInfo.tempHigh); let waterLeftPerHour = []; // 初始化小时计数变量 let currentHour = 1; // 外层循环处理水量递减 for (let j = totalWaterToDrink; j > 0; j -= waterHourFinal) { if (j - waterHourFinal > 0) { console.log(`HOUR ${currentHour}:`); console.log(`你将在本小时开始时拥有 ${j} 盎司水。`); console.log(`本小时需要饮用 ${waterHourFinal} 盎司水。`); console.log(`本小时结束后剩余 ${j - waterHourFinal} 盎司水。`); console.log(`---`); } waterLeftPerHour[j] = j - waterHourFinal; // 每完成一次循环,小时数加1 currentHour++; }
改动说明
- 删除了冗余的内层小时循环,改用
currentHour变量从1开始计数 - 每次外层循环结束后,
currentHour自增1,确保小时数逐次递增 - 将输出文本改为中文,更易理解
内容的提问来源于stack exchange,提问作者Vladimir Spasovich
相关产品推荐
相关产品推荐

