eMR*_*MRe 1 java language-agnostic
你能解释一下这个for循环是如何工作的吗?
for (int i = 0, ii = deck.size(); i != ii;) {
int x = i % NUMBER_OF_CARDS;
int y = i / NUMBER_OF_CARDS;
Card d = deck.get(i++);
d.setFace(true); // face up
d.displayCard(40 + x * 90, y * 140 + 10); // draw them
println(d.getRank()); // println
text("Value:" + d.getRank() + " of " + d.getSuit(), 40+x * 90, y * 140 + 120);
}
Run Code Online (Sandbox Code Playgroud)
DWr*_*ght 10
for循环有三个部分,分隔;
这三个部分都是可选的.你可以写一个这样的循环for(;;) {},它会永远持续下去.或者这个:for(;;) { break; }它会立即终止.或者像这样:
int i = 0;
for(;;) {
if (++i>=4) { break; }
}
Run Code Online (Sandbox Code Playgroud)
它将在四次迭代后终止,通过break.
您问题的循环缺少迭代部分.(但循环变量正在循环体本身中更新,例如i++).
唯一的另一个特殊功能是循环在第一部分初始化两个变量,i和ii.它们由逗号运算符分隔,这使得逗号分隔的表达式按顺序独立评估.
循环,
for (int i = 0, ii = deck.size(); i != ii;) {
...
Card d = deck.get(i++);
...
}
Run Code Online (Sandbox Code Playgroud)
几乎相当于
for (int i =0; i < deck.size(); i++) {
...
Card d = deck.get(i);
...
}
Run Code Online (Sandbox Code Playgroud)