请求将计算骰子投掷平均值的for循环改写为while循环
把RollAverage函数从for循环改写为while循环
没问题,我帮你搞定这个骰子平均值计算的函数改写,顺便修正了原代码里的小bug(原for循环的计数逻辑有问题哦)。
修改后的代码(while循环版本)
function RollAverage() { // 假设:outputDiv可用于输出 // 结果:统计投掷次数并计算平均值 var userNum, countTotal, rollSum; userNum = parseFloat(document.getElementById('textBox').value); countTotal = 0; rollSum = 0; // 替换原for循环的while循环逻辑 while (countTotal < userNum) { // 累加两个骰子的投掷结果 rollSum += RandomInt(1, 6) + RandomInt(1, 6); // 完成一次投掷,计数+1 countTotal++; } // 计算平均值并输出(补全原代码的截断部分) const average = rollSum / userNum; document.getElementById('outputDiv').innerHTML = `Here's the average: ${average.toFixed(2)}`; }
关键改动说明
- 替换循环类型:把原有的for循环改成了逻辑更直观的while循环,先初始化好计数变量
countTotal和总和变量rollSum,然后在countTotal小于用户指定次数时持续循环。 - 修复计数错误:原for循环里的
countTotal=countTotal++是无效写法(后置自增会先返回原值,赋值后等于没变化),而且循环体里还额外写了countTotal++,会导致实际投掷次数是用户输入的一半。改成while循环后,每次循环只执行一次countTotal++,计数逻辑准确。 - 补全输出逻辑:原代码的输出部分被截断了,我帮你补全了平均值的计算和格式化输出,保留两位小数让结果更直观。
内容的提问来源于stack exchange,提问作者Erin Ralph
相关产品推荐
相关产品推荐

