第6章 循環結構

?循環語句: 可以讓一部分代碼,反復執行?

1.1?循環語句while

while循環:
編寫格式:

while(條件){
循環體
}
條件: 當條件是true,就執行循環體,執行完循環體后
程序再次執行while中的條件,如果條件還是true,繼續執行循環體
直到條件是false的時候,循環就結束

public class WhileDemo{public static void main(String[] args){//輸出 1-4之間的整數//定義變量,整數類型, 循環的條件int i = 1;while( i < 5 ){System.out.println(i);i++;}}

?

在上述代碼中,x初始值為1,在滿足循環條件x <=?4的情況下,循環體會重復執行,打印x的值并讓x進行自增。因此打印結果中x的值分別為1234

大家要注意的是,代碼x++用于在每次循環時改變變量x的值,從而達到最終改變循環條件的目的。如果沒有這行代碼,整個循環會進入無限循環的狀態,永遠不會結束。

?

1.2?循環語句for

for循環語句是最常用的循環語句,一般用在循環次數已知的情況下。for循環語句的語法格式如下:

for(初始化表達式; 循環條件; 操作表達式){

執行語句

………

}

/*for循環編寫格式for(初始化變量 ; 條件 ; 增量){循環體}初始化變量: 定義變量,作用,控制循環的次數條件: 當條件是true,執行循環體,條件是false,結束循環增量: 變量自增情況
*/
public class ForDemo{public static void main(String[] args){//for循環,輸出0-10for(int i = 0 ; i < 11 ; i++){System.out.println(i);}}
}

for循環執行示意圖如下:

利用for循環累加求和

*利用for循環,計算1+4的結果1 + 2 + 3 + 4 = 101+2的和+31+2+3的和+4
*/
public class ForDemo_1{public static void main(String[] args){// 定義變量,記錄求和后的數據int sum = 0;// 利用循環,將變量從1變化到4for(int i = 1 ; i <= 4 ; i++){//對變量進行求和sum = sum + i;}System.out.println(sum);}
}

1.3?循環語句dowhile

do…while循環語句和while循環語句功能類似,其語法結構如下:

do?{

執行語句

………

} while(循環條件);

在上面的語法結構中,關鍵字do后面{}中的執行語句是循環體。do…while循環語句將循環條件放在了循環體的后面。這也就意味著,

循環體會無條件執行一次,然后再根據循環條件來決定是否繼續執行。(也就是先做后判斷!)不管循環條件是否滿足都會執行一次循環體!

do…while循環的執行流程如下圖所示

?

基礎示例:

*do...while循環編寫格式:do{循環體}while(條件);特點: 無條件先執行一次
*/
public class DoWhileDemo{public static void main(String[] args){int i = 0; do{System.out.println(i);i++;}while( i <  5);}
}

接下來使用do…while循環語句來實現打印1~4之間的自然數DoWhileDemo.java

特點:(也就是先做后判斷!)不管循環條件是否滿足都會執行一次循環體!

public class DoWhileDemo {public static void main(String[] args) {int x = 1; // 定義變量x,初始值為1do {System.out.println("x = " + x); // 打印x的值x++; // 將x的值自增} while (x <= 4); // 循環條件
    }
}

?

我們發現WhileDemo.javaDoWhileDemo.java運行的結果一致,這說明什么呢?這說明do …while循環和while循環能實現同樣的功能。

然而在程序運行過程中,這兩種語句還是有差別的。如果循環條件在循環語句開始時就不成立,那么while循環的循環體一次都不會執行

do…while循環的循環體還是會執行一次。若將DoWhileDemo.java中的循環條件x<=4改為x < 1

DoWhileDemo.java運行結果會打印x=1,而WhileDemo.java運行結果什么也不會打印。

?

1.4?無限循環

最簡單無限循環格式:

while(true){}

for(;;){}

無限循環存在的原因是并不知道循環多少次,而是根據某些條件,來控制循環

如下代碼是無限循環的幾種寫法!

?

?

public class WhileForDemo{public static void main(String[] args){//while形式死循環/*while(true){}*///for形式死循環
//        for( ; true ; ){
//            
//        }for(;;){System.out.println("a");    }}
}

1.5?循環嵌套

嵌套循環是指在一個循環語句的循環體中再定義一個循環語句的語法結構。whiledo…whilefor循環語句都可以進行嵌套,并且它們之間也可以互相嵌套,如最常見的在for循環中嵌套for循環,格式如下:

?

外循環,控制的是行數
內循環,控制的是每行的個數

?

?

for(初始化表達式; 循環條件; 操作表達式) {………for(初始化表達式; 循環條件; 操作表達式) {執行語句………}………
}

?

*循環的嵌套: 循環里面還有循環, for形式多for(){for(){}}總的循環次數 =  內循環次數 * 外循環的次數內循環,是外循環的循環體外循環,控制的是行數內循環,控制的是每行的個數
*/
public class ForForDemo{public static void main(String[] args){for(int i = 0 ; i < 9 ; i++){for(int j = 0; j < i+1 ;j++){System.out.print("* ");}System.out.println();}}
}

?

圖1-1?運行結果

在上述代碼中定義了兩層for循環,分別為外層循環和內層循環,外層循環用于控制打印的行數,內層循環用于打印“*”,每一行的“*”個數逐行增加,最后輸出一個直角三角形。由于嵌套循環程序比較復雜,下面分步驟進行詳細地講解,具體如下:

第一步,在第3行代碼定義了兩個循環變量ij,其中i為外層循環變量,j為內層循環變量。

第二步,在第4行代碼將i初始化為1,條件i <= 9true,首次進入外層循環的循環體。

第三步,在第5行代碼將j初始化為1,由于此時i的值為1,條件j?<= itrue,首次進入內層循環的循環體,打印一個“*”。

第四步,執行第5行代碼中內層循環的操作表達式j++,將j的值自增為2

第五步,執行第5行代碼中的判斷條件j<=i,判斷結果為false,內層循環結束。執行后面的代碼,打印換行符。

第六步,執行第4行代碼中外層循環的操作表達式i++,將i的值自增為2

第七步,執行第4行代碼中的判斷條件i<=9,判斷結果為true,進入外層循環的循環體,繼續執行內層循環。

第八步,由于i的值為2,內層循環會執行兩次,即在第2行打印兩個“*”。在內層循環結束時會打印換行符。

第九步,以此類推,在第3行會打印3個“*”,逐行遞增,直到i的值為10時,外層循環的判斷條件i <= 9結果為false,外層循環結束,整個程序也就結束了。

?

雙層for循環示意圖:

1.6跳轉語句(breakcontinue

break 關鍵字
作用于循環中,終止循環的作用

?

如下圖示例:

?

/*break 關鍵字作用于循環中,終止循環的作用
*/
public class BreakDemo{public static void main(String[] args){int i = 1;while(i < 2000){if(i == 3){break;}else{System.out.println(i);}i++;}}
}

?

2、?標記?

當break語句出現在嵌套循環中的內層循環時,它只能跳出內層循環

如果想使用break語句跳出外層循環則需要對外層循環添加標記。接下來將ForForDemo.java稍作修改,控制程序只打印4

*”,如下所示。BreakDemo02.java

public class BreakDemo_1{public static void main(String[] args){a:for(int i = 0 ; i < 2; i++){for(int j = 0; j < 5 ;j++){System.out.print("j="+j);break a;}System.out.println("i="+i);}}
}

3、?continue語句

?

continue語句用在循環語句中,它的作用是終止本次循環,執行下一次循環。

?

/*continue 關鍵字 作用: 在循環中, 終止本次循環,開始下一次循環
*/
public class ContinueDemo{public static void main(String[] args){for(int i = 0 ; i < 10 ; i++){if(i%2==0){continue;}System.out.println(i);}}
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255778.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255778.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255778.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【深度學習】——pytorch搭建模型及相關模型

目錄 1、搭建模型的流程 1&#xff09;步驟 2&#xff09;完整代碼——手寫minist數據集為例&#xff08;這里使用的數據集是自帶的&#xff09; 2、搭建模型的四種方法 1&#xff09;方法一——利用nn.Sequential&#xff08;&#xff09; 2&#xff09;方法二——利用co…

ABB robot 與 Fronius 設備 IO

ABB robot 與 Fronius 設備 IO

初次使用cocoapods注意事項

在僅僅用cocoapods時可能會遇到各種各樣的錯誤和問題 這里中總結下: 1.首先使用cocoapods有非常多優點,在github上非常多優秀的開源項目都用到了它;假設你不會使用它,那么非常多優秀的開源項目你下載下來了也發現跑不起來,假設發現有Profile,Profile.lock,Pods等cocoapods相關…

MongoDB復制集技術

為什么使用MongogDB復制集技術? mysql中:一主一從&#xff0c;一主多從結構存在的問題 1、 fileover&#xff08;故障轉移&#xff09;a) 選主投票b) 切換 2、 是否對就用透明化 3、 數據補償的問題a) 兩階段數據補償 4、 解決方法 mysql中使用MHAVIP b…

Linux文件系統的實現 (圖文并茂,比較好)

作者&#xff1a;Vamei 出處&#xff1a;http://www.cnblogs.com/vamei 歡迎轉載&#xff0c;也請保留這段聲明。謝謝&#xff01; Linux文件管理從用戶的層面介紹了Linux管理文件的方式。Linux有一個樹狀結構來組織文件。樹的頂端為根目錄(/)&#xff0c;節點為目錄&#xff0…

【深度學習】——如何處理輸入圖像大小不一樣的情況

這里一般有常見的幾種方法&#xff1a; 1&#xff09;將圖像縮放成大小一致后再輸入&#xff0c;如RCNN算法 2&#xff09;roi pooling&#xff1a;這里允許輸入圖像的大小不一樣&#xff0c;后續根據指定的固定大小來求解池化的核大小&#xff0c;以此來得到相同大小的特征圖&…

ROS探索總結(一)——ROS簡介

隨著機器人領域的快速發展和復雜化&#xff0c;代碼的復用性和模塊化的需求原來越強烈&#xff0c;而已有的開源機器人系統又不能很好的適應需求。2010年Willow Garage公司發布了開源機器人操作系統ROS&#xff08;robot operating system&#xff09;&#xff0c;很快在機器人…

微信瀏覽器取消緩存的方法

摘要:做微信公家號以及調試手機頁面的時辰&#xff0c;防止不了頁面要跳轉到微信閱讀器打開&#xff0c;調試階段&#xff0c;android版微信閱讀器一直都默許緩存html靜態資本&#xff0c;每一次靜態資本變革乃至新內容發布的時辰在微信閱讀器上都極有可能不克不及更新&#xf…

【機器視覺】——裂紋檢測筆記

目錄 傳統算法處理裂縫的基本思路&#xff1a; 第一種思路 第二種思路&#xff1a; 第三種思路 CPP代碼 halcon代碼 python代碼 Matlab代碼 深度學習缺陷檢測 裂縫檢測文獻 傳統算法處理裂縫的基本思路&#xff1a; 第一種思路 1.先轉換彩色圖為灰度圖 2.進行自適應…

利用union判斷系統的大小端

int checkCPUendian()//返回1&#xff0c;為小端&#xff1b;反之&#xff0c;為大端&#xff1b; { union{ unsigned int a; unsigned char b; }c; c.a 1; return 1 c.b; }大端模式(Big-endian)&#xff0c;是指數據的高字節保存在內存的低地址中&#xff0c;而數據…

Filter(過濾器)?和?interceptor(攔截器)的區別

Filter&#xff08;過濾器&#xff09; 和 interceptor&#xff08;攔截器&#xff09;的區別 1.攔截器是基于java反射機制的&#xff0c;而過濾器是基于函數回調的。 2.過濾器依賴于Servlet容器&#xff0c;而攔截器不依賴于Servlet容器。 3.攔截器只對Action請求起作用&#…

ROS探索總結(二)——ROS總體框架

一、 總體結構 根據ROS系統代碼的維護者和分布來標示&#xff0c;主要有兩大部分&#xff1a;&#xff08;1&#xff09;main&#xff1a;核心部分&#xff0c;主要由Willow Garage公司和一些開發者設計、提供以及維護。它提供了一些分布式計算的基本工具&#xff0c;以及整個…

python 阿貍的進階之路(4)

裝飾器 #1、開放封閉原則&#xff1a;對擴展開放&#xff0c;對修改是封閉#2、裝飾器&#xff1a;裝飾它人的&#xff0c;器指的是任意可調用對象&#xff0c;現在的場景裝飾器-》函數&#xff0c;被裝飾的對象也是-》函數#原則&#xff1a;1、不修改被裝飾對象的源代碼 2、不修…

【深度學習】——利用pytorch搭建一個完整的深度學習項目(構建模型、加載數據集、參數配置、訓練、模型保存、預測)

目錄 一、深度學習項目的基本構成 二、實戰&#xff08;貓狗分類&#xff09; 1、數據集下載 2、dataset.py文件 3、model.py 4、config.py 5、predict.py 一、深度學習項目的基本構成 一個深度學習模型一般包含以下幾個文件&#xff1a; datasets文件夾&#xff1a;存放…

二叉樹的序遍歷

時間限制: 1 s空間限制: 32000 KB題目等級 : 白銀 Silver題目描述 Description求一棵二叉樹的前序遍歷&#xff0c;中序遍歷和后序遍歷 輸入描述 Input Description第一行一個整數n&#xff0c;表示這棵樹的節點個數。 接下來n行每行2個整數L和R。第i行的兩個整數Li和Ri代表編號…

GUI登錄界面

在這次的作業中&#xff0c;我先使用單選按鈕&#xff0c;輸入框&#xff0c;復選框設計了一個簡單地登錄界面。接著我使用了MouseListener將登陸按鈕與下一個“查詢界面”連接起來。最后我使用了我們本周所學的JFrame框架與事件處理機制設計了一個簡單地界面。我所設計的登錄界…

淺談ROS操作系統及其應用趨勢

ROS操作系統是最先由斯坦福開發的開源機器人操作系統&#xff0c;目前由willowgarage公司開發和維護&#xff0c;相關的開發社區也很成熟&#xff08; http://www.ros.org &#xff0c; http://answers.ros.org, http://www.willowgarage.com), 經過幾年的發展API也逐漸穩定&a…

Raft學習傳送門

Raft官網 官方可視化動畫1 官方可視化動畫2 論文中文翻譯 論文英文地址 Paxos Made Simple論文翻譯 Raft理解 技術分享 《分布式一致性raft算法實現原理》 狀態機 MIT&#xff1a; raft實現 分布式系統學習2-Raft算法分析與實現 分布式系統MIT 6.824學習資源 知乎大神的&#…

【Python生成器與迭代器的區別】

目錄 一、迭代 二、迭代器 1&#xff09;創建迭代器——兩種方法 iter&#xff08;&#xff09;方法 利用()和range結合使用 2&#xff09;具體案例 3、生成器 4、二者的異同 1&#xff09;、共同點 2&#xff09;、不同點 a、語法上 b、用法上 一、迭代 首先理解一…

BZOJ4426 : [Nwerc2015]Better Productivity最大生產率

如果一個區間包含另一個區間&#xff0c;那么這兩個區間是否在一起的生產率是一樣的。 將所有這種包含了其他區間的區間放入數組$b$&#xff0c;其余的放入數組$c$&#xff0c;有多個相同的時候則從$b$移一個到$c$。 那么$c$里所有區間左端點遞增&#xff0c;右端點也遞增&…