我正在使用的代码可以创建一个10 x 10的对象块,这些对象稍后将在程序中绘制。我希望程序在两行中跳过对象8和9的x和y值。
如果将代码稍作修改以表示If(Skip [0] == i),它会完美运行,但仅适用于一个值,这需要重复,这是我试图通过设置来避免的阵列。我对编码不是很了解,所以请尽量简化。
不起作用
int Skip[2] = { 8, 9 };
for (int j = 0; j <= 10 - 1; j++) {
for (int i = 0; i <= 10 - 1; i++) {
for (int m = 0; m <= 1; m++) {
if (i == Skip[m]) {
continue;
}
}
x[i][j] = 0 + i * 50;
y[i][j] = 0 + j * 50;
}
}
可以工作
int Skip[2] = { 8, 9 };
for (int j = 0; j <= 10 - 1; j++) {
for (int i = 0; i <= 10 - 1; i++) {
if (i == Skip[0]) {
continue;
}
x[i][j] = 0 + i * 50;
y[i][j] = 0 + j * 50;
}
}
答案 0 :(得分:2)
在不起作用的示例中,continue
适用于m
上的循环。整个循环是精心设计的无操作-绝对没有效果。
在工作示例中,continue
适用于i
上的循环,并且具有提前中止该迭代并跳至下一个迭代的作用。
答案 1 :(得分:1)
要添加到@Igor's answer,请将continue
更改为break
,以中断内部循环,但继续外部循环。它应该具有您想要的效果:
for (int j = 0; j <= 10 - 1; j++) {
for (int i = 0; i <= 10 - 1; i++) {
for (int m = 0; m <= 1; m++) {
if (i == Skip[m]) {
// This breaks the m loop, but continues the i loop
break;
}
}
x[i][j] = 0 + i * 50;
y[i][j] = 0 + j * 50
}
}