【问题标题】:Nested for loop not working [closed]嵌套for循环不起作用[关闭]
【发布时间】:2015-10-23 00:57:26
【问题描述】:

我有这个代码

var draw = function() {
var bx = 0;
var by = 0;
//height
for (var i = 0; i < 11; i++) {
    //width
    for (var s = 0; s < 10; s++) { 
        block(bx,by,air);
        bx = bx + 50;
    }
    by = by + 50;
} 

发生的情况是,当我运行 draw() 时,它应该在 10 x 10 绘图的整个部分中绘制正方形。然而,这种情况并非如此。这一切都搞砸了,我不知道发生了什么。

注意:这是使用 processing.js。你可以在这里找到完整的代码:https://www.khanacademy.org/computer-programming/mc-10/4727460304912384

【问题讨论】:

  • 请提供比“一切都搞砸了”更具体的问题描述。例如,提供 jsFiddle 或 codepin.io 链接。
  • 我把所有的代码链接都放在了NOTE部分
  • 为什么不在 for 循环中使用 bxbyfor(var bx = 0; bx &lt; 550; bx += 50)
  • 您的问题不完整。如果您不改进它,它将被关闭,原因是:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包含所需的行为,特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确的问题陈述的问题对其他读者没有用处。见:How to create a Minimal, Complete, and Verifiable example.
  • @EdCottrell 所需的行为在于问题:“它应该在 10 x 10 绘图的整个部分中绘制正方形”

标签: javascript for-loop nested-loops processing.js


【解决方案1】:

不要为迭代和绘图使用单独的变量。

var width = 50;
for (var by = 0; by < 11 * width; by += width) {
    for (var bx = 0; bx < 10 * width; bx += width) {
        block(bx, by, air);
    }
}

或:

var width = 50;
for (var i = 0; i < 11; i++) {
    for (var s = 0; s < 10; s++) { 
        block(s * width, i * width, air);
    }
} 

【讨论】:

    【解决方案2】:

    您需要在每次迭代时重置 bx

    for (var i = 0; i < 11; i++) {
        bx = 0;
        for (var s = 0; s < 10; s++) { 
            block(bx,by,air);
            bx = bx + 50;
        }
        by = by + 50;
    } 
    

    【讨论】:

    • 谢谢!我真的很想我以前会想到这一点。谢谢!
    • 对不起,但这会促进不良做法。请参阅 Barmar 的答案(在他的代码上方)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多