【问题标题】:How can I make my guess-password code's loop work?如何使我的猜测密码代码循环工作?
【发布时间】:2019-11-11 05:17:01
【问题描述】:

我想编写这个函数“guessPasscode”,但不认为我的代码有效。 (其他功能都正确)应该猜0000~9999之间的每一个数字为四位密码。

我运行了这个函数,但它没有打印出任何东西,而且我也不认为这个函数按我想要的方式工作。

var guess = "";
var guessCode ="";
function start() {
    var secretPasscode = generateRandomPasscode();
    guessPasscode(secretPasscode);


}

// Checks whether the given guess passcode is the correct passcode
function isCorrect(guessCode, correctCode) {
    return guessCode == correctCode;
}

// Generates a random 4 digit passcode and returns it as a String
function generateRandomPasscode() {
    var randomPasscode = "";

    for(var i = 0; i < 4; i++) {
        var randomDigit = Randomizer.nextInt(0, 9);
        randomPasscode += randomDigit;
    }

    return randomPasscode;
}
function guessPasscode(secretPasscode){
    for (var a = 0; a < 10; a++){
        guess += a;
        for (var b = 0; b < 10; b++){
            guess += b;
            for(var c = 0; c < 10; c++){
                guess += c;
                for (var d = 0; d < 10; d++){
                    guess += d;
                    if (isCorrect(guessCode, secretPasscode)){
                    println("Success!");
                    break;
                    }
                    guess = 0; //I am not sure about this line though
                }
            }
        }
    }
    if (isCorrect(guessCode, secretPasscode)){
        println("Success!");
    }
}

我希望它在找到正确的密码后打印“成功”并停止循环。

【问题讨论】:

  • Java 之于 Javascript 就像 Pain 之于绘画,或者 Ham 之于仓鼠。它们完全不同。强烈建议有抱负的编码人员尝试学习他们尝试编写代码的语言的名称。当您发布问题时,请适当地标记它 - 这可以让那些了解您需要帮助的语言的人看到您的问题。
  • 汽车之于地毯
  • 当你只能从 0 数到 9999 时为什么要循环四个?
  • 您的println 函数中有什么?您是否在 DevConsole 中看到错误消息?
  • 我正在尝试将四位数字相加以形成可能的四位密码,所以它不仅仅是 0-9999

标签: javascript loops for-loop


【解决方案1】:

那些嵌套的 for 循环非常疯狂而且效率极低。如果您想从 0 到 9999 进行猜测,只需运行循环,然后在左侧填充零。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

for (let i = 0; i < 9999; i++) {
     let guess = String(i).padStart(4, '0')
     guessAnswer(guess)
     //whatever logic here to exit loop on correct guess
}

【讨论】:

  • 没问题。如果确实解决了您的问题,请将此答案标记为正确!
猜你喜欢
  • 2017-08-31
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 2015-08-19
  • 1970-01-01
相关资源
最近更新 更多