C語言中文網 目錄

Java for語句詳解

for 語句是一種在程序執行前就要先判斷條件表達式是否為真的循環語句。假如條件表達式的結果為假,那么它的循環語句根本不會執行。for 語句通常使用在知道循環次數的循環中。

for 語句語法格式如下所示。
for(條件表達式1;條件表達式2;條件表達式3)
{
語句塊;
}

for 循環中 3 個條件表達式的含義如表 1 所示。
表1 for 循環中 3 個表達式的含義
表達式 形式 功能 舉例
條件表達式 1 賦值語句 循環結構的初始部分,為循環變量賦初值 int i=1
條件表達式 2 條件語句 循環結構的循環條件 i>40
條件表達式 3 迭代語句,通常使用
++ 或 -- 運算符
循環結構的迭代部分,通常用來修改循環
變量的值
i++

for 關鍵字后面括號中的3 個條件表達式必須用“;”隔開。for 循環中的這 3 部分以及大括號中的循環體使循環體必需的 4 個組成部分完美地結合在一起,簡單明了。

for 循環語句執行的過程為:首先執行條件表達式 1 進行初始化,然后判斷條件表達式 2 的值是否為 true,如果為 true,則執行循環體語句塊;否則直接退出循環。最后執行表達式 3,改變循環變量的值,至此完成一次循環。接下來進行下一次循環,直到條件表達式 2 的值為 false,才結束循環,其運行流程如圖 1 所示。


圖1  for 循環執行流程圖

例如,同樣是計算 5 的階乘,使用 for 循環的實現代碼如下:
public static void main(String[] args)
{
int result=1;
for(int number=1;number<=5;number++)
{
result*=number;
}
System.out.print("5 的階乘結果是:"+result);    //輸出"5的階乘結果是:120"
}

上述語句的含義可以理解為,將 number 變量的值從 1 開始,每次遞增 1,直到大于 5 時終止循環。在循環過程中,將number 的值與當前 result 的值進行相乘。

for 語句中的 3 個條件表達式并不是必須存在的,它們可以部分為空,也可以全為空。下面對這些情況依次進行介紹。

1.條件表達式 1 為空

for 語句中條件表達式 1 的作用可以在程序的其他位置給出,所以當條件表達式 1 為空時,for 語句后面括號內其他條件表達式執行的順序不變。

例如,使用 for 語句的這種形式計算 1~100 所有奇數的和。
public static void main(String[] args)
{
int result=0;
int number=1;    //相當于for 語句的第1 個表達式
for(;number<101;number++)
{
if(number%2!=0)    //如果不能整除2,說明是奇數,則進行累加
result+=number;
}
System.out.print("100 以內所有奇數和為:"+result);
}

執行后的輸出結果如下:
100 以內所有奇數和為:2500

2.條件表達式 2 為空

當 for 語句中條件表達式 2 為空時,將沒有循環的終止條件。此時 for 語句會認為條件表達式 2 的值總是為真,循環無限制執行下去。因此,為了使循環達到某種條件時退出,需要在語句塊中進行邏輯判斷,并使用 break 語句來跳出循環,否則將產生死循環。

同樣是計算 1~100 所有奇數的和,使用這種方式的代碼如下。
public static void main(String[] args)
{
int result=0;
for(int number=1; ;number++)
{
if(number>100)break;    //相當于for語句的表達式2,滿足時就退出for循環
if(number%2!=0)    //如果不能整除2,說明是奇數,則進行累加
result+=number;
}
System.out.print("100 以內所有奇數和為:"+result);
}

3.條件表達式 3 為空

當 for 語言中條件表達式 3 為空時,也就沒有設置控制變量的表達式,即每次循環之后無法改變變量的值,此時也無法保證循環正常結束。

同樣是計算1~100 所有奇數的和,使用這種方式的代碼如下:
public static void main(String[] args)
{
int result=0;
for(int number=1;number<101;)
{
if(number%2!=0)    //如果不能整除2,說明是奇數,則進行累加
result+=number;
number++;    //相當于for語句的條件表達式3,每次遞增1
}
System.out.print("100 以內所有奇數和為:"+result);
}

如果沒有循環體語句,number 變量的值為 1,永遠小于 101,因此將無法結束循環,形成無限循環。在上面代碼中將number 的遞增語句放在for 循環體內,效果與完整 for 語句功能相同。

4.3 個條件表達式都為空

在 for 循環語句中,無論缺少哪部分條件表達式,都可以在程序的其他位置補充,從而保持 for 循環語句的完整性,使循環正常進行。

當 for 語句中循環體全為空時,即沒有循環初值,不判斷循環條件,循環變量不增值,此時無條件執行循環體,形成無限循環或者死循環。對于這種情況,讀者在使用時應該盡量避免。

例如,計算 1~100 所有奇數的和,使用這種方式的代碼如下:
public static void main(String[] args)
{
int result=0;
int number=1;    //相當于for語句的條件表達式1
for(;;)
{
if(number>100)
break;    //相當于for語句的條件表達式2
if(number%2!=0)    //如果不能整除2,說明是奇數,則進行累加
result+=number;
number++;    //相當于for語句的條件表達式3
}
System.out.print("100 以內所有奇數和為: "+result);
}

例 1

編寫一個 Java 程序,統計某超市上半年的總銷售量,要求由用戶輸入每月的銷量。使用 for 循環的實現代碼如下。
public static void main(String[] args)
{
int sum=0;
int num=0;
Scanner sc=new Scanner(System.in);
for(int i=1;i<=6;i++)
{
System.out.println("請輸入第"+i+" 個月的銷售數量:");
num=sc.nextInt();
sum+=num;
}
System.out.println("上半年的銷售總量為:"+sum);
}

在該程序中, 聲明循環變量 i,控制循環的次數,它被初始化為 1。每執行一次循環,都要對 i 進行判斷,看其值是否小于等于 6,條件成立則繼續累加成績,否則退出循環。

每執行完一次循環體,都會對 i 累加 1。如此循環重復,直到i 的值大于6 時停止循環。此時退出 for 循環體,執行最下方的語句輸出累加的銷售總量。

運行程序,執行結果如下所示。
請輸入第1 個月的銷售數量:
6840
請輸入第2 個月的銷售數量:
5449
請輸入第3 個月的銷售數量:
6546
請輸入第4 個月的銷售數量:
2400
請輸入第5 個月的銷售數量:
908
請輸入第6 個月的銷售數量:
8048
上半年的銷售總量為:30191

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo