【问题标题】:How to forcefully end an iteration of a for-loop (without stopping the for-loop)?如何强制结束 for 循环的迭代(不停止 for 循环)?
【发布时间】:2019-04-10 10:34:35
【问题描述】:

这可能是一个愚蠢的问题,但这里是。有没有办法强制结束 for 循环的迭代并忽略循环中的所有其他条件语句,然后进行下一次迭代?

我正在尝试制作一个工具,只要用户输入一个字母,它就会被打印到画布上。

我正在使用 for 循环来执行此操作,每次迭代都会使下一个字母每次都向右移动。

在for循环中包含了输入字母的条件语句:

function draw(){
}
function keyPressed(){
    for(i=0; i<100; i++){
        if(keyCode == 65){
            text("a", 60 + i*10, 60)
        }
        ...
        ...
        ...
    }
}

等等等等。但是,这只有在每个字母移动到下一次迭代之后才有效(否则,由于 'i' 没有增加,字母将被打印在同一个地方,使其不可读)。

在每个条件语句的末尾使用“return”对我不起作用,因为“return”结束了整个 for 循环,而我只想结束特定的迭代。

感谢所有帮助,谢谢。

【问题讨论】:

  • 您是否尝试过将其视为一个 while 循环?这样您在按下键时注册输入,而不是运行有限次的 for 循环?
  • @IncrediblePony 感谢您的回复。我确实考虑过使用 while 循环,但主要问题仍然存在。我只能够输入有限数量的单词(100)没有问题。我只需要能够强制跳转到下一个迭代。无论如何谢谢你。

标签: for-loop p5.js


【解决方案1】:

听起来您正在寻找continue 关键字。以下是来自W3Schools 的示例:

for (i = 0; i < 10; i++) {
  if (i === 3) { continue; }
  text += "The number is " + i + "<br>";
}

Here 是一个可以自己尝试代码的链接。

但退后一步,这感觉像是一个有缺陷的设计。如果你想得到他们用户按下的键,你不必使用一堆if 语句。您可以只使用 key 变量。来自P5.js reference

function setup() {
  fill(245, 123, 158);
  textSize(50);
}

function draw() {
  background(200);
  text(key, 33, 65); // Display last key pressed.
}

即使由于某种原因这不起作用(例如,如果您想为箭头键显示某些内容),也可能有比@987654330 中的一堆if 语句更好的方法来解决这个问题@ 环形。例如,您可以创建从keyCode 到要显示的字符串的映射,然后调用该映射。比如:

var m = new Map()
m.set(65, 'a');
m.set(66, 'b');
//..

function keyPressed(){
  text(m.get(keyCode), 50, 50);
}

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 2022-08-18
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多