## Java編程那些事兒35——while語句語法
鄭州游戲學院 陳躍峰
出自:[http://blog.csdn.net/mailbomb](http://blog.csdn.net/mailbomb)
**5.4 循環語句**
循環語句在程序設計中用來描述有規則重復的流程。在實際的程序中,存在很多需要重復執行的流程,為了簡化這些重復的執行流程,在程序設計語言中新增了該類語句。
在學習循環語句時,最重要的就是發現流程的規律,然后再用程序設計語言將該規律描述出來,從來實現程序要求的流程。
循環語句是流程控制中最復雜,也是最有用、最難掌握的語句,在最初接觸時,首先要熟悉基本的語法,然后需要能夠快速觀察出流程的規律,這個觀察能力需要依靠大量的閱讀和編寫程序進行培養,這就是基本的邏輯思維,然后將該規律描述出來即可。所以在學習循環語句時,學習語法只是基本的內容,更多的是培養自己觀察規律的能力,這個才是真正學習循環語句時的難點,也是重點。
本節主要講述循環語句的三種語法格式:while語句、do-while語句和for語句。
**5.4.1 while語句**
while關鍵字的中文意思是“當……的時候”,也就是當條件成立時循環執行對應的代碼。while語句是循環語句中基本的結構,語法格式比較簡單。
while語句語法格式:
?????????????????? while(循環條件)
??????????????????????????? 循環體;
為了結構清楚,并且使循環體部分可以書寫多行代碼,一般把循環體處理成代碼塊,則語法格式變為:
?????????????????? while(循環條件){
??????????????????????????? 循環體;
?????????????????? }
語法說明:和if語句類似,如果不是用代碼塊的結構,則只有while后面的第一個語句是循環體語句。在該語法中,要求循環條件的類型為boolean類型,指循環成立的條件,循環體部分則是需要重復執行的代碼。
執行流程:在執行while語句時,首先判斷循環條件,如果循環條件為false,則直接執行while語句后續的代碼,如果循環條件為true,則執行循環體代碼,然后再判斷循環條件,一直到循環條件不成立為止。
下面結合具體的示例來演示一下while語句的基本使用。首先我們來實現一個無限循環,也稱死循環,具體代碼如下:
~~~
?????????????????? while(true){
??????????????????????????? System.out.println(‘a’);
?????????????????? }
~~~
下面講解一下該while語句的執行順序,首先判斷while語句的循環條件,條件成立,則執行循環體的代碼,輸出字符a,然后再判別循環條件,條件成立,繼續執行循環體代碼,輸出a,再判斷循環條件……,依次類推,因為循環條件一直成立,所以該程序的功能是一直輸出a,永不停止。
說明:在控制臺下執行死循環的程序,可以按Ctrl+C結束循環,在Eclipse中運行死循環的程序,可以選擇執行窗口中的紅色按鈕“Terminate”結束程序。
下面是使用while語句輸出0-9這10個數字,程序實現的原理是使用一個變量代表0-9之間的數字,每次輸出該變量的值,每次對該變量的值加1。變量的值從0開始,只要小于數字10就執行該循環。具體的示例代碼如下:
~~~
?????????????????? int i = 0;
?????????????????? while(i < 10){
??????????????????????????? System.out.println(i); //輸出變量的值
??????????????????????????? i++; //變量的值增加1
?????????????????? }
~~~
其執行流程為:
1、?執行int I = 0;
2、?判斷i<10是否成立,如果不成立則結束,否則執行下一步
3、?輸出變量i的值
4、?i的值增加1
5、?跳轉到步驟2繼續執行
需要注意的是,首先while語句中的條件是循環成立的條件,也就是該條件成立則繼續循環,所以在書寫時注意。另外,內部代碼的書寫有順序,同樣是上面的代碼,如果調整內部代碼的順序,如下所示:
~~~
???????? ???????? int i = 0;
?????????????????? while(i < 10){
??????????????????????????? i++; //變量的值增加1
??????????????????????????? System.out.println(i); //輸出變量的值
?????????????????? }
~~~
則程序的執行結果將變為輸出數字1-10。所以在循環語句中,代碼之間的順序也影響整個程序的邏輯。
下面是用循環實現一個簡單的數學邏輯,求1-10這10個數字的和。程序的原理是這樣:聲明一個變量i,從1變化到10,在聲明一個變量sum,每次和i的值相加以后賦值給自身,下次再使用sum是變化以后的i相加,循環結束以后,得到的結果就是數字1-10之間所有數字的和。
示例代碼如下:
~~~
???????? int i = 1;?? ??//循環變量
???????? int sum = 0; ?//數字和
???????? while(i <= 10){
?????????????????? sum += i;?? //和當前的i值相加
?????????????????? i++;?????? //變量i增加1
???????? }
~~~
這樣,第一次循環是把和1相加的結果賦值給sum,然后再使用sum的值和2相加再賦值給sum,依次類推,則得到1-10之間所有變量的和。
在使用循環語句時,發現規律需要的時間比編寫和調試代碼需要的時間多得多,所以要善于發現規律,善于思考。
- 前言
- (1)序言
- (2)程序設計是什么?
- (3)你適合學習程序設計嗎?
- (4)如何學好程序設計?
- (5)程序設計介紹小結
- (6)計算機軟件基本概念
- (7)進制的概念
- (8)計算機內部的數據表達
- (9)網絡編程基礎
- (10)Java語言簡介
- (11)JDK的獲得、安裝和配置
- (12)第一個HelloWorld程序
- (13)Eclipse基本使用
- (14)Eclipse基礎使用進階
- (15)如何學好Java語法
- (16)代碼框架、關鍵字和標識符
- (17)基本數據類型
- (18)變量和常量
- (19)數據類型轉換
- (20)空白、語句結束和注釋
- (21)算術運算符
- (22)比較運算符
- (23)邏輯運算符
- (24)賦值運算符
- (25)位運算符
- (26)移位運算符
- (27)其它運算符
- (28)運算符優先級
- (29)表達式
- (30)流程控制基礎
- (31)if語句語法(1)
- (32)if語句語法(2)
- (33)if語句語法(3)
- (34)switch語句語法
- (35)while語句語法
- (36)do-while語句語法
- (37)for語句語法
- (38)break和continue語句
- (39)流程控制綜合示例1
- (40)流程控制綜合示例2
- (41)流程控制綜合示例3
- (42)流程控制綜合練習
- (43)數組概述
- (44)數組基礎語法
- (45)數組使用示例1
- (46)數組使用示例2
- (47)數組使用示例3
- (48)多維數組基礎
- (49)多維數組使用示例1
- (50)多維數組使用示例2
- (51)多維數組練習
- (52)方法聲明
- (53)方法聲明示例
- (54)方法調用
- (55)方法重載和參數傳遞
- (56)方法練習
- (57)面向對象基礎
- (58)類(一)
- (59)類(二)
- (60)對象
- (61)面向對象設計方法和面向對象特性(一)
- (62)繼承(二)
- (63)多態性
- (64)訪問控制符、修飾符和其它關鍵字
- (65)static修飾符
- (66)final修飾符
- (67)this和super
- (68)抽象類和接口(一)
- (69)抽象類和接口(二)
- (70)抽象類和接口(三)
- (71)內部類簡介
- (72)包的概念
- (73)JDK文檔使用
- (74)java.lang包介紹1
- (75)String類使用
- (76)StringBuffer類和System類
- (77)包裝類
- (78)時間和日期處理
- (79)Random隨機處理
- (80)集合框架簡述
- (81)異常處理概述
- (82)異常處理語法1
- (83)異常處理語法2
- (84)IO簡介
- (85)IO類體系
- (86)文件操作之File類使用
- (87)文件操作之讀取文件
- (88)文件操作之寫文件
- (89)讀取控制臺輸入
- (90)裝飾流使用1
- (91)裝飾流使用2
- (92)IO使用注意問題
- (93)多線程基礎
- (94)多線程實現方式1
- (95)多線程實現方式2
- (96)多線程使用示例1
- (97)多線程使用示例2
- (98)多線程問題及處理1
- (99)多線程問題及處理2
- (100)多線程問題及處理3
- (101)網絡編程概述
- (102)網絡編程技術1
- (103)網絡編程技術2
- (104)網絡編程技術3
- (105)網絡編程技術4
- (106)網絡編程技術5
- (107)網絡協議概念
- (108)網絡編程示例1
- (109)網絡編程示例2
- (110)網絡編程小結