單元目標
1. 建立while迴圈
2. 建立for 迴圈
3. 建立do/while 迴圈
補充: 使用continue語法
1. 建立while 迴圈
1. 功能 : 當判斷式為真時,則while 迴圈將重覆執行程式碼區塊.
2. 語法 : while (boolean_expression) {
code_block;
}// while 結尾
3. 使用重點: a. 先思考離開迴圈的方式,以避免進入無限迴圈.
b. 思考出來後,先寫下離開迴圈的程式碼.
c. 寫完離開迴圈的程式碼後,再寫迴圈的本體程式(就是要利用迴圈跑的程式啦).
範例:
1. int i = 0;
while(i<5)
{
System.out.println("hello!");
++i // 有這個++i,才能在i>5的時候跳脫迴圈的程式,所以要先寫出來.
}
作業: 寫一支利用while 迴圈, 算出s=1+2+3+...+n 的計算程式.
ANS :
import java.util.*;
public class homework
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in); // 建立新的物件類別
int n = scanner.nextInt(); // 建立輸入選項
int s = 0; // 宣告預設加總s為0
while(n>0) // 當輸入值n 大於0, 則執行程式
{
s += n--; // while迴圈內的主程式,進行不斷加上遞減1的迴圈.
} System.out.println("s="+s); // 顯示迴圈加到最後的結果
}
} // 所以當我們輸入10(n)的時候, 會跑出55(s)的值出來^^
巢狀式while迴圈
範例: 請利用巢狀式迴圈做出如下的圖形.
HHHHHHHHHH
HHHHHHHHHH
HHHHHHHHHH
ANS: 可以先用一個while迴圈做出一行,再用另一個while迴圈重覆執行前一個while迴圈3次.
程式碼如下:
public class WhileRectangle // 建立類別
{
public static void main(String[] args) // 建立主程式
{
int colCount = 0; // 在迴圈前先初始化,colCount是自行設定的變數,這裡代表行數.
int rowCount = 0; // 在迴圈前先初始化,rowCount是自行設定的變數,這裡代表列數.
while(rowCount<3) // 列數為3
{
colCount = 0; // 在執行第2個迴圈前,將變數colCount初始化為0
while(colCount<10) // 行數為10
{
System.out.print("H");
++colCount; // 這是跳脫第2迴圈的程式,要先寫.
}
System.out.println(); // 將上面的第2個迴圈整支程式加以分行顯示.
++rowCount; // 這是跳脫第1迴圈的程式,要先寫.
} // 紅色字體的程式碼為巢狀式while迴圈.
}
}
2. 建立for迴圈
1. 功能 : 當判斷式為真時,則for 迴圈將重覆執行程式碼區塊.
2. 語法 : for (initialize[,initia;ize] ; boolean_expression ; update[,update]) {
code_block;
}
H : 上面的語法乍看之下還真難看懂耶@@, 其實initialize就是指要放上一個變數並且初始化,
而它後面又多了一個[,initia;ize]就是指可以在後面加上第2個變數,中間用逗號" , " 隔開啦.
例如: for (i=0,j=0 ; boolean_expression ; update[,update] ) , i與j就是兩個變數,當這兩個變數
要放在一起時就必須加個逗號" , " 隔開.因此最後面的update[,update]依此類推,
用剛才的例子寫就是for (i=0,j=0 ; boolean_expression ; i++,j++ )
3. 使用重點: a.
先思考離開迴圈的方式,以避免進入無限迴圈.
b.
思考出來後,先寫下離開迴圈的程式碼.
c.
寫完離開迴圈的程式碼後,再寫迴圈的本體程式(
就是要利用迴圈跑的程式啦).
範例:
1. for (i=0 ; i<5 ; i++) //有這個++i,才能在i>5的時候跳脫迴圈的程式,所以要先寫出來.
{
System.out.println("hello!");
}
作業: 利用for迴圈寫一支可以顯示2,4,6,8,10 這5個數的程式.
ANS :
public class Forpg
{
public static void main(String[] args)
{
for(int i=2;i<11;i+=2) // 先設定變數i 的初始值為2 , 最後設定跳脫for迴圈的條件
為變數i = i+2.
{
System.out.println(i);
}
}
}
H : += 是一個遞增運算子,所以 a+=b , 就等於 a= a+b , 所以i += 2, 就是 i =i+2
巢狀式for迴圈
範例: 利用巢狀式for迴圈建立如下圖形:
HHH
HHH
HHH
HHH
HHH
ANS : 先用第一個for迴圈建立"HHH"結果,再用第2個for迴圈包住,並執行5次.程式碼如下:
public class ForRectangle
{
public static void main(String[] args)
{
for (int rowCount = 0 ; rowCount<5 ; rowCount++)
{
for(int colCount =0 ; colCount<3 ; colCount++)
{
System.out.print("H");
}
System.out.println();
}
}
}
3. 建立do/while迴圈
1. 功能 : 當判斷式為真時,則do迴圈將重覆執行程式碼區塊.
2. 語法 : do {
code_block;
}while(boolean_expression);
H : while後面的分號" ; " 一定要加上喔!
3. 使用重點: a.
先思考離開迴圈的方式,以避免進入無限迴圈.
b.
思考出來後,先寫下離開迴圈的程式碼.
c.
寫完離開迴圈的程式碼後,再寫迴圈的本體程式(
就是要利用迴圈跑的程式啦).
範例:
1. public class Dotest
{
public static void main(String[] args)
{
int i = 0;
do
{
System.out.println(i);
i++;
} while(i<10); // 記得一定要加上分號" ; "
}
}
巢狀式do/while迴圈
範例: 利用巢狀式do/while 迴圈建立如下圖形:
HHH
HHH
HHH
HHH
HHH
ANS : 先用第一個do/while 迴圈建立"HHH"結果,再用第2個do/while 迴圈包住,並執行5次.程式碼如下:
public class Dopg
{
public static void main(String[] args)
{
int r = 0;
do
{
int w =0;
do
{
System.out.print("H");
w++;
}while(w<3); // while 後面一定要加上分號
System.out.println();
r++;
}while(r<5); // 說了很多次,一定要加上分號
}
}
4.使用continue語法:
請先參閱下面的程式,我設定了若是變數 i 為3( if(i==3) ), 則執行continue程式.
這樣會有什麼效果呢?就是當程式進行到continue時,會跳回去到for 的程式去,
所以就不會顯示出i=3的結果,因此,執行這段程式碼,會顯示出0.1.2.4的結果.
public class Testcontinue
{
public static void main(String[] args)
{
for(int i=0; i<5 ; i++)
{
if(i==3)
{
continue;
}System.out.println(i);
}
}
}