1. 程式人生 > >選擇 | 迴圈 | 語句(if,if……else,switch,while,for)的理解和使用

選擇 | 迴圈 | 語句(if,if……else,switch,while,for)的理解和使用

一、選擇結構語句
選擇結構語句,字面上理解既然含有選擇,就一定得有相應供其選擇的條件才行。
例如現實世界中我們開車遇到紅綠燈會知道紅燈停,綠燈行,Java中也是如此,有些程式碼必須滿足條件才能被執行。
對一些條件進行判斷,從而來確定執行哪些程式碼的語句,就是選擇結構語句。
選擇結構語句主要有if語句和switch語句兩種,if語句又可以分為if,if……else,if……else if……else三種。下面來詳細看一下這三種語句的用法。

1、if條件句

if代表的含義是如果滿足某種條件,就進行處理,其格式如下:

if(條件語句){
    需要執行的程式碼塊
}

條件是我們規定的,通過判斷條件否滿足,從而判斷進行何種運算。
例如上面的程式碼塊我們要達到的是:如果小明考了90分以上,媽媽就獎勵小明一個機器人。通過if語句表達的格式如下

if(小明成績>90){
    媽媽獎勵一個機器人
}

當小明成績!>90時,媽媽沒有懲罰也沒有獎勵
判斷條件必須是布林值,當條件為true時,{ }中的程式碼塊才會被執行,否則直接跳過{ }內的語句。這是if語句總結

2、if……else條件語句

但是我們有時候會發現,上面的例子不太 符合現實,小明萬一考的低於90,媽媽要打他該怎麼辦?那就需要if……else語句了,if……else語句格式如下

if(條件語句){
    如果條件成立,執行的程式碼
}else{
    如果條件不成立,執行的程式碼
}

繼續用小明的例子來看一下,這次小明沒有考到九十分,媽媽想打他,該怎麼辦?既然if語句滿足不了需求了,那麼我們就看看if……else是怎麼解決的。

if(小明成績>90){
    媽媽獎勵機器人
}else{
    媽媽打小明一頓
}

判斷條件必須是一個布林值,當值為true時,執行if後面{ }中的內容;當值為flase時,執行else後面{ }中的內容。

3、if……else if……else語句

但是我們發現,if……else語句有時候仍然沒辦法滿足我們的需求,因為小明的媽媽並不是一個不通人情的人,如果滿分80分的卷子小明考了80還要被打,真是太沒有天理了。於是我們有了if……else if ……else語句,先來看一下基本格式

if(判斷條件1){
    執行的程式碼1
}else if(判斷條件2){
    執行的程式碼2
}
…… else if(判斷條件n){ 執行的程式碼n }else{ 執行的程式碼4 }

該語句是用於對多個條件進行判斷,進行多種處理的語句
加入小明考了85分,媽媽沒有打他也沒有表揚他,那麼在程式碼中就是這樣子

if(小明成績>90){
    媽媽獎勵機器人
}else if(小明成績>80){
    媽媽不懲罰也不表揚
}else{
    狠狠打一頓!
}

按照小明考的85分,媽媽是不懲罰也不打的。
小結:判斷條件是一個布林值,判斷條件1位true時,則執行程式碼1,否則判斷條件2;
條件2為true時,執行程式碼2,否則判斷條件3……
以此類推。沒有滿足條件是,則執行else後面的語句。

4、switch條件語句
if條件句可以對多個條件進行判斷,從而確定執行哪一段程式碼。switch卻和if 不同,他只能對一個條件進行判斷,然後在語句中進行匹配,從而確定執行哪一段。通俗的說就是,if語句中,小明考不同的分數,媽媽會給不同的“獎勵”;switch語句中,小明考一個分數,媽媽按照分數和事先開好的“獎勵”單子對照,確定要給的獎勵。
該語句格式如下

switch(){
    case 目標值1:
        執行語句1
        break;
    case 目標值2:
        執行語句2
        break;
    case 目標值n:
        執行語句n
        break;
    default;
        執行語句n+1
        break;
}

default的作用是沒有匹配值時候執行該語句,break的作用是,跳出該switch語句。就是說,如果小明考了100,沒有break的情況下,媽媽會把所有的“獎勵”都給他,包括考低分的打一頓。
如果case後面的語句都是相同的,只需寫一遍即可,格式如下

case 1case 2case 3:
    System.out.println("今天上班");

還需要注意的一點是,switch語句中表達式的值只能是byte,short,,char,int。jdk7.0以後支援String型別。

三元運算子

這是一個類似if……else的語句,格式如下

/*判斷條件?表示式1:表示式2
if ……else語句變成三元運算子大致如下
*/

int x=0;
int y=1;
int max;
if(x>y){    |       int max=x>y?x:y;
    max=x;  | // 定義變數max x>y嗎?如果大於,x賦給max,否則y賦給max
}else{      |
    max=y;  |
}           |

二、迴圈結構語句
生活中有許多事情需要我們重複做的,比如小明沒考好,媽媽打他100下。這樣如果換到程式程式碼中,我們要怎麼表達呢?難道要寫上相同的程式碼100次嗎?完全不用,只需要使用迴圈語句就可以了。
迴圈語句有while迴圈,do……while迴圈,for迴圈三種。迴圈語句還會涉及到一點巢狀,就是迴圈中有迴圈。通俗的說就是小明媽媽打他100下,打到50下累了,喝口水休息一下,然後把剩下的50下又給打了。好,下面一起來看看幾種迴圈的具體寫法吧。

while迴圈語句

while迴圈語句和if選擇語句很像,都是判斷條件是否成立,然後執行相應程式碼塊。區別在於,while迴圈會反覆進行條件判斷,只要條件成立,{ }內的語句都會執行,直到條件不成立,while語句迴圈結束。
下面看一下while的具體格式

while(迴圈條件){
    迴圈體
}

上面{ }之間的程式碼被稱作迴圈體,當迴圈條件為true時,迴圈體就會執行。
簡單例子(又是小明同學…)

int 打小明次數=0
while(打小明次數<=100){
    噼裡啪啦(打的真慘)
    打小明次數++
}

上面的過程是這樣的:次數=0 所以滿足條件,噼裡啪啦,然後次數加1,然後繼續。直到次數=101,不滿足時候,才可停止。

do……while迴圈語句

do……while迴圈語句和while迴圈語句基本相同,唯一的區別在於,do……while迴圈會先進行一次迴圈再判斷條件。也就是說,無論小明考了多少分,都得先打一巴掌,然後再看分數。do……while迴圈格式如下

do{
    執行語句
}while(迴圈條件)

成績低於80,媽媽就打小明變成了這樣子。即使小明考100,也得先打一下

do{
    噼裡啪啦
}while(成績低於80)

for迴圈語句

for迴圈時最常用的迴圈,就像是打孩子最常用拖鞋一樣。
但是for迴圈一般是永在迴圈次數已知的情況下。
for迴圈的格式稍微有一點繞人,但是隻要看懂了就很簡單(豎線是分割線)

for(初始化表示式;迴圈條件;操作表示式){  |   for(①;②;③){
    迴圈體                          |       ④
}                                  |    }

先執行1 即初始化表示式。
然後執行2,即判斷條件,
如果2的為true,則執行4,4執行完再執行3,然後從1開始重複此過程;
如果2的結果為flase,退出迴圈。

迴圈巢狀

迴圈巢狀是指在一個迴圈語句的迴圈體中再定義一個迴圈語句的語法結構。while,do……while,for迴圈語句都可以進行巢狀,並且他們之間可以相互巢狀。最常見的是for迴圈中巢狀for迴圈,格式如下:

for(初始化表示式;迴圈條件;操作表示式){
    ……
    for(初始化表示式;迴圈條件;操作表示式){
        執行語句
        ……
    }
    ……
}

這樣是有點抽象,我們還是用小明被打的例子來看一下

for(媽媽打小明休息次數=0;休息次數<2;休息次數++){
    for(媽媽打小明次數=0;次數<50;次數++){
        噼裡啪啦;
    }
}

這樣媽媽打小明50次的時候就可以喝杯水休息一下了。

跳轉語句(break,continue)

java中跳轉語句有break語句和continue語句,我們分開來看break和continue。

break:

break既可以在switch語句使用,又可以迴圈語句中使用。
當在switch語句中使用的時候,作用是跳出某個case,並且跳出switch,例子在switch時候已經說過。
當他出現在迴圈語句中的時候,作用是跳出迴圈語句,執行後面的程式碼。
當break語句出現在巢狀迴圈內層的時候,只能跳出內層迴圈,如果想跳出外層迴圈,則需要對外層迴圈進行標記。就像小明被媽媽打一樣,家裡來了阿姨只會中斷媽媽第一次打小明50次,客人走了還會繼續。只有媽媽和阿姨一起逛街才能中斷整個打小明的過程。
下面看一下如何做標記

itcast:for(①;②;③){
        for(①;②;③){
        break itcast;   
        }
}

continue:

continue語句在迴圈語句中,作用是終止本次迴圈,進行下次迴圈。
類似於媽媽第一次打小明30次,阿姨走了,剩下的20次媽媽沒打。就開始打第二輪的50次了。
continue也可以像break語句一樣 通過新增標記的方式結束外層迴圈。