如何强制结束for循环的迭代(不停止for循环)?

时间:2019-04-10 10:34:35

标签: for-loop p5.js

这可能是一个愚蠢的问题,但这是可行的。有没有办法强制结束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循环,而我只想结束该特定迭代。

感谢所有帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

听起来您正在寻找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.
}

即使由于某种原因(例如,如果您想为箭头键显示某些内容)而无法正常工作,解决该问题的方法也可能比在命令行中的if语句更好。 for循环。例如,您可以创建从keyCode到要显示的字符串的映射,然后调用该映射。像这样:

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

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