【迴圈流程控制(Loop
Control Flow)】
先判斷再執行。合乎expression時執行statements,否則跳出。
格式:
while
(expression)
{statements;}
[範例]
class While1
{
public static void main (String[] args) {
int loop1
= 1;
while (loop1
<= 3) {
System.out.println("loop1= " + loop1);
loop1++;
}
}
}
執行結果:C:\js>java While1
loop1= 1
loop1= 2
loop1= 3
先執行再判斷。執行後判斷合乎expression時,則繼續執行statements,否則跳出。
格式:
do
{statements;}
while
(expression);
[範例]
class Dowhile1
{
public static void main (String[] args) {
int x = 1;
do {
System.out.println("x = " + x);
x++;
}
while (x <= 3);
}
}
執行結果:C:\js>java Dowhile1
x = 1
x = 2
x = 3
格式:
for
(expr1;expr2;expr3;)
{statements;}
expr1:初期值 expr2:條件式 expr3:遞增或遞減
合乎exp2時執行,否則跳出。
exp1內可自訂for迴圈專用變數,如 int x = 1,但不得使用於迴圈外。
[範例]
class For1 {
public static void main (String[] args) {
int m;
for(m=1; m<=3; m++) // for(int m=1;m<=3;m++)
System.out.println("m = " + m);
}
}
執行結果:C:\js>java For1
m = 1
m = 2
m = 3
會編譯錯誤之程式片段:
1.
for(int m=1;m<=3;m++)
System.out.println("m="+m);
System.out.println("m="+m); //迴圈外,不得使用在迴圈內宣告之變數m
2.
for(int m=1;m<=3;m++){
System.out.println("m="+m);
break; // break後不繼續執行m++
};
break:跳出迴圈
continue:跳出該次迴圈,繼續執行
[範例]
class Break1
{
public static void main (String[] args) {
int x;
for(x=1; x<=5; x++) {
if(x==3)
break;
System.out.println("x= " + x);
}
}
}
執行結果:C:\js>java Break1
x= 1
x= 2
[範例]
class Continue1
{
public static void main (String[] args) {
int x;
for(x=1; x<=5; x++) {
if(x==3)
continue;
System.out.println("x = " + x);
}
}
}
執行結果:C:\js>java Continue1
x = 1
x = 2
x = 4
x = 5
[範例:break與迴圈標籤]
跳出該標籤之迴圈。
class Break2
{
public static void main (String[] args) {
int x, y;
L1: for(x=1; x<=2; x++) {
System.out.println("x = " + x);
L2: for(y=1; y<=5; y++) {
if(y==3)
break L2;
System.out.println("y = " + y);
}
}
}
}
執行結果:C:\js>java Break2
x = 1
y = 1
y = 2
x = 2
y = 1
y = 2
[範例:continue與迴圈標籤]
跳出該標籤之該次迴圈。
class Continue2
{
public static void main (String[] args) {
intx, y;
L1: for(x=1; x<=2; x++) {
System.out.println("x
= " + x);
L2: for(y=1;
y<=5; y++) {
if(y==3)
continue L2;
System.out.println("y = " + y);
}
}
}
}
執行結果:C:\js>java Continue2
x = 1
y = 1
y = 2
y = 4
y = 5
x = 2
y = 1
y = 2
y = 4
y = 5
[範例:標籤之錯誤應用]
只可置於迴圈前端,否則會有編譯錯誤。
class Break3
{
public static void main (String[] args) {
int x;
L1: x=1;
for(x=1; x<=5; x++) {
if(x==3)
break L1;
System.out.println("x = " + x);
}
}
}
編譯結果:C:\js>javac Break3.java
break3.java:8:
error: undefined label: L1
break L1;
^
1 error
依序指派陣列值。
格式:
for(資料型別 變數名:陣列名)
[範例]
使用foreach將numberarray陣列之元素0~9依序指派給numout並印出。
class
NumberPrint{
public static void main(String[] args){
int numberarray[] =
{1,3,5,7,9,11,13,15,17,19};
for(int i=0;i<10;i++) //使用for迴圈列印陣列內容
System.out.print(numberarray[i]+("
"));
System.out.println("");
System.out.println("另一種方法-foreach");
for(int numout:numberarray) //使用foreach列印陣列內容
System.out.print(numout+(" "));
System.out.println("");
}
}
執行結果:C:\js>java NumberPrint
1 3 5 7 9 11
13 15 17 19
另一種方法-foreach
1 3 5 7 9 11
13 15 17 19
沒有留言:
張貼留言