这个for循环语法很困惑

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循环有三个部分,分隔;

  1. 初始化;
  2. 终止条件;
  3. 迭代(每次循环都要做的事情)

这三个部分都是可选的.你可以写一个这样的循环for(;;) {},它会永远持续下去.或者这个:for(;;) { break; }它会立即终止.或者像这样:

int i = 0;  
for(;;) {
  if (++i>=4) { break; } 
}
Run Code Online (Sandbox Code Playgroud)

它将在四次迭代后终止,通过break.

您问题的循环缺少迭代部分.(但循环变量正在循环体本身中更新,例如i++).

唯一的另一个特殊功能是循环在第一部分初始化两个变量,iii.它们由逗号运算符分隔,这使得逗号分隔的表达式按顺序独立评估.


Qia*_*Jin 5

循环,

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)