From Gossip@Openhome

Java Gossip: for 迴圈 

在Java中所提供的重複性計算陳述之一是 for 迴圈式,它的基本語法如下:
for(初始變數; 判斷式; 遞增式) {
    陳述句一;
    陳述句二;
}

如果陳述句只有一個,也就是非複合陳述句,{ } 可以省略不寫;for 迴圈的第一個初始變數陳述句只會執行一次,之後每次重新進行迴圈時,都會根據判斷式來判斷是否執行下一個迴圈,而每次執行完迴圈之後,都會執行遞增式一次。

來看個簡單的範例:

  •  SimpleForLoop.java
public class SimpleForLoop { 
public static void main(String[] args) {
for(int i = 0; i < 10; i++)
System.out.print(" " + i);
}
}

執行結果:
 0 1 2 3 4 5 6 7 8 9

簡單的例子,但說明for的作用再適合不過,在Java中您可以直接在for中宣告變數與指定初始值,這個宣告的變數在 for迴圈結束之後也會自動消失;初始變數的陳述句只被執行一次,接下來迴圈會根據 i 是否小於10來判斷是否執行迴圈,而每執行一次迴圈就將 i 加1。

for迴圈中也可以再使用for迴圈,大家很喜歡用的例子就是顯示九九乘法表,這邊就用這個例子來說明:

  • NineNineTable.java
public class NineNineTable {
public static void main(String[] args) {
for(int j = 1; j < 10; j++) {
for(int i = 2; i < 10; i++) {
System.out.printf("%d*%d=%2d ",i, j, i * j);
}
System.out.println();
}
}
}

執行結果:
2*1= 2 3*1= 3 4*1= 4 5*1= 5 6*1= 6 7*1= 7 8*1= 8 9*1= 9
2*2= 4 3*2= 6 4*2= 8 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18
2*3= 6 3*3= 9 4*3=12 5*3=15 6*3=18 7*3=21 8*3=24 9*3=27
2*4= 8 3*4=12 4*4=16 5*4=20 6*4=24 7*4=28 8*4=32 9*4=36
2*5=10 3*5=15 4*5=20 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45
2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 7*6=42 8*6=48 9*6=54
2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 8*7=56 9*7=63
2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 9*8=72
2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

事實上,for迴圈的語法其實只是將三個複合陳述區塊寫在一個括號中而已,所不同的是第一個陳述區塊只會執行一次,第二個陳述區塊專司判斷,而第三個陳述區塊只是一般的陳述句,而不一定只放遞增運算式。

for括號中的每個陳述區塊是以分號(;)作區隔,而在一個陳述區塊中若想寫兩個以上的陳述句,則使用逗號(,)作區隔,有興趣的話,看看下面這個九九乘法表的寫法,它只使用了一個for迴圈就可以完成九九乘法表的列印:

  • NineNineTable.java
public class NineNineTable { 
public static void main(String[] args) {
for (int i = 2, j = 1;
j < 10;
i = (i==9)?((++j/j)+1):(i+1)) {
System.out.printf("%d*%d=%2d%c", i, j, i * j,
(i==9 ? '\n' : ' '));
}
}
}

執行結果:
2*1= 2 3*1= 3 4*1= 4 5*1= 5 6*1= 6 7*1= 7 8*1= 8 9*1= 9
2*2= 4 3*2= 6 4*2= 8 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18
2*3= 6 3*3= 9 4*3=12 5*3=15 6*3=18 7*3=21 8*3=24 9*3=27
2*4= 8 3*4=12 4*4=16 5*4=20 6*4=24 7*4=28 8*4=32 9*4=36
2*5=10 3*5=15 4*5=20 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45
2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 7*6=42 8*6=48 9*6=54
2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 8*7=56 9*7=63
2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 9*8=72
2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

這個程式的重點在於讓您看看for迴圈的括號中之寫法,當然原則上並不鼓勵這麼寫,程式基本上還是以清楚易懂為原則,至於這個九九乘法表的演算其實也不難,當中的語法之前都介紹過了,您可以親自演算看看就知道怎麼回事了。