迴圈(重複性結構) for while do while
程式結構 循序性結構(sequence structure) 選擇性結構(selection structure) 程式由上而下(top to down)的敘述執行。 選擇性結構(selection structure) 依條件的成立與否,決定所要執行的敘述。 if, if-else, else-if 重複性結構(iteration structure) 依條件的成立與否,決定程式敘述執行的次數。 for, while, do while
重複性結構
for 用法 語法格式 流程圖 for(設定迴圈初值; 判斷條件; 設定增減量) { 迴圈主體; } 這兒不可以加分號
for範例-從1累加至10 public class Sample { public static void main(String args[]) int sum=0; for(int i=1;i<=10;i++) //此處的i為區域變數,有效範圍只在for迴圈 sum+=i; System.out.println("累加至"+i+"的結果="+sum); } //迴圈跑10次 //System.out.println(“\n最後i="+i); System.out.println("\n1+2+3+...+10="+sum); }
練習 撰寫一Java程式,讓使用者輸入一數字x,輸出此數字的x!結果。
範例-九九乘法表 public class Sample { public static void main(String args[]) int i,j; for(i=1;i<=9;i++) for(j=1;j<=9;j++) System.out.print(i+"*"+j+"="+(i*j)+"\t"); System.out.println(); }
練習-TQC 108 TQC 108: 九九乘法表 題目要求使用陣列及迴圈 (可以在學習陣列後,再練習
練習-TQC 202 TQC 202: 利息計算 使用Math.round四捨五入。
while 用法 語法格式 流程圖 設定迴圈初值; while(判斷條件) { 迴圈主體; 設定增減量; } 這兒不可以加分號
while範例-從1累加至10 public class Sample { public static void main(String args[]) int sum=0,i=1; while(i<=10) sum+=i; System.out.println("累加至"+i+"的結果="+sum); i++; } //迴圈跑10次 System.out.println(“\n最後i="+i); System.out.println("\n1+2+3+...+10="+sum); }
do while用法 語法格式 流程圖 設定迴圈初值; do { 迴圈主體; 設定增減量; } while(判斷條件); 要加分號
do while範例-累加 import java.util.Scanner; public class Sample { public static void main(String args[]) int sum=0,i=1; Scanner sc=new Scanner(System.in); int max; do{ System.out.println("請輸入累加的最大值"); max=sc.nextInt(); }while(max<1);
續do while範例-累加 do { sum+=i; //sum+=i++; System.out.println("累加至"+i+"的結果="+sum); i++; }while(i<=max); System.out.println("\n最後i="+i); System.out.println("\n1+2+3+...+10="+sum); }
何種情況用何種迴圈 基本上沒有限定在什麼情況下使用何種迴圈,但習慣上,會在確定迴圈次數時選擇for迴圈,而在不確定迴圈次數時選擇while迴圈,這樣的做法能讓語意更清楚的表達。 while與do-while的差異在於,do-while先做再條件判斷,for,while先條件判斷。在迴圈的次數上來數do-while至少一定會執行1次。
巢狀迴圈(nested loops) 迴圈之中又有其它迴圈,稱為巢狀迴圈。
搭配迴圈使用的指令 break 離開最近的迴圈 continue 跳回迴圈的起頭
練習-break import java.util.Scanner; public class Sample { public static void main(String args[]) Scanner sc=new Scanner(System.in); int num,ans=(int)(Math.random()*10);
續練習-break for(;;) { System.out.print("請猜猜看何者數字(0~9)可離開:"); num=sc.nextInt(); if(num==ans) System.out.println("\n恭喜您答對了~\n"); break; } System.out.println("偷偷告訴你答案是"+ans);
練習-continue import java.util.Scanner; public class Sample { public static void main(String args[]) Scanner sc=new Scanner(System.in); int num,ans=(int)(Math.random()*10); char ch='Y';
續練習-continue do{ System.out.print("請猜猜看何者數字(0~10)可離開:"); num=sc.nextInt(); if(num!=ans) { System.out.println("\n答錯了!!~請加油\n"); continue; } System.out.println("\n\n\n答案是"+ans+"可是答對才印出來啦~哈哈"); ch='N'; }while(ch!='N');