You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

while循环计数器问题求助:密码暴力破解模拟代码调试

问题分析与解决

错误原因

  1. 随机数仅生成一次:你把randomNumber定义在while循环外部,整个程序运行期间只会生成一个固定的随机数,无法模拟每次破解的不同场景。
  2. 强制终止循环:每个判断分支里都加了break,不管是猜对、猜错被检测还是猜错未被检测,循环只执行一轮就直接退出,correctGuesses根本没有机会逐次累加。
  3. 多余的无效判断:循环条件已经是correctGuesses < 4,进入循环时这个值必然小于4,内部的correctGuesses === 4判断永远不会触发。

修正后的代码

var correctGuesses = 0;

while (correctGuesses < 4) {
    // 每次循环重新生成1-3的随机数,模拟单次破解的随机结果
    var randomNumber = Math.ceil(Math.random() * 3);
    
    if (randomNumber === 1) {
        correctGuesses++;
        console.log(`Found ${correctGuesses} characters`);
    } else if (randomNumber === 2) {
        correctGuesses = 0;
        console.log('Starting over');
    }
    // randomNumber为3时,correctGuesses保持不变,无需额外操作
}

// 循环退出时correctGuesses必然等于4,打印成功信息
console.log('Terminal hacked!');

修改说明

  • 将randomNumber的生成逻辑移到循环内部,确保每次破解都会生成新的随机数,符合任务要求的随机场景。
  • 移除所有不必要的break,让循环可以持续执行,直到correctGuesses累加到4。
  • 把成功提示放到循环结束后打印,因为循环退出的条件就是correctGuesses >=4,此时必然破解成功。
  • 用模板字符串简化了打印语句,同时修正了原代码中字符串拼接的空格问题。

内容的提问来源于stack exchange,提问作者Luis Kaiseler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 23:01:08