【JAVA零基礎入門系列】Day8 Java的控制流程

  什麼是控制流程?簡單來說就是控制程序運行邏輯的,因爲程序一般而言不會直接一步運行到底,而是需要加上一些判斷,一些循環等等。舉個栗子,就好比你準備出門買個蘋果,把這個過程當成程序的話,可能需要先判斷一下外面是否下雨,下雨的話就得帶傘,否則就直接出門,同時,外面可能有很多家水果店,那去哪家買呢?這裏把價格放在第一要素,所以你會一家一家跑,直到找到最便宜的那家爲止。

  其實,上述買蘋果的過程,已經用了兩種最常用的控制流程:條件和循環。畫個流程圖就像這樣:

  

  通過這個圖,大家應該能很清楚的瞭解整個決策過程。其實在程序中也是這樣運行的,下面再來詳細的介紹一下這幾個流程控制語句。

  1、條件語句if

  條件語句用於判斷,就像上面的判斷是否下雨一樣,轉換成代碼就是:

if (isRaining == true){
    //take a umbrella
}
//go out

  跟if一起使用的是else以及else if,用作分支,比如說,分數在90-100分是優秀,80-90分是滿意,60-80分是及格,60分以下是不及格,那麼轉換成代碼如下:

複製代碼
if(mark >90 && mark <= 100){
    //優秀  
}else if(mark >80){
    //滿意
}else if(mark >60){
    //及格
}else{
    //不及格
}
複製代碼

  上述代碼中,使用了if跟else if 以及else的組合。如果mark是70分,則會先在if中判斷第一個條件,因爲不滿足括號內條件,不成立,則流程進入else if,判斷第二個條件是否滿足,發現第二個條件也不滿足,因此進入第三個條件,發現第三個條件滿足,因此會執行及格這一部分的代碼。

  2.循環語句

  Java的循環語句主要有這麼幾個:while,do  while,for

  while循環很簡單,先判斷後面的條件是否滿足,如果滿足則執行後續的代碼,一直循環執行,直到條件不成立爲止。舉個栗子,總分一百分,錯一個題扣十分,低於六十分則判定爲失敗。

  while(循環條件){
           循環體;
  }

int mark = 100;
while(mark>60){
    mark -= 10;
    System.out.println(mark);
}

  這裏的"mark-=10"是"mark = mark - 10"的簡寫形式,這段代碼會依次輸出90,80,70,60,因爲60>60不成立,所以循環結束。

  當然,循環中也可以用break跟continue來控制,break直接跳出當前循環,執行循環部分後面的代碼,而continue則是直接跳到本輪循環的末尾。舉個栗子:

複製代碼
int accout=0;  
       while(true){  
             
           accout++;  
           if(accout==5){  
               break;  
           }  
           if(accout==2){  
               continue;  
           }
      System.out.println("accout:"+accout);
} 
複製代碼

  這裏會依次輸出1,3,4,因爲account=2時,執行continue會跳過之後的代碼,直接跳到下一次循環,而account=5的時候,執行break,跳出循環。這裏的while用邏輯值true來控制也是比較常見的用法。

  而do while跟while的區別在於,do while是先執行循環體,再判斷條件是否成立,就是說,不論如何,循環體至少會被執行一次。兩種循環適用的場合不一樣。舉個栗子。do-while 語句的語法格式爲:

do{
        循環體;
}while(循環條件);

int i=0;  
do {  
    System.out.println("我一定會執行一次的");  
    i++;  
}while(i<5);  

  這裏會輸出五次“我一定會執行一次的”。

  再介紹一下最常用的循環,for循環,for 語句的基本結構如下所示:
for(初始化表達式;判斷表達式;遞增(遞減)表達式){
    執行語句;   //一段代碼
}

  初始化表達式:初始化表達式的意義,在於定義循環之前變量的值是多少,如果沒有這一項,就不知道該從哪個值開始循環。

  判斷表達式:判斷表達式的作用在於規定循環的終點。如果沒有判斷表達式,那麼此循環就成了死循環。

  遞增(遞減)表達式:這一項規定每執行一次程序,變量以多少增量或減量進行變化  

  結構清楚了,現在就舉一個最基礎的例子來介紹一下:(這個例子是循環輸出0到5的數字。)
for(int i=0;i<5;i++){  
    System.out.println("i:"+i);  
}  

  初始化也可以放在循環之前:

int j=0;  
for(;j<=6;j=j+2){  
    System.out.println("j:"+j);  
} 

  如果要用for執行死循環的話:

for(;;){  
  System.out.println("yes");  
}  

  如果既要執行死循環又要用參數進行控制的話:

int n=0;  
for(;;n=n+10){  
    System.out.println("n:"+n);  
}  

  for循環還有一個很常用的地方就是遍歷數組,所謂遍歷,就是一個一個訪問。

String[] strNum={"張三","李四","王五"};  
for(String str:strNum){  
    System.out.println("name:"+str);  
}  

  關於數組的知識會在之後做講解,這裏不需要深究。

  如果想要利用for實現多層循環的,可以這麼寫:

複製代碼
for(int i=0;i<5;i++){  
    for(int j=0;j<5;j++){  
        System.out.print(j+"  ");  
    }  
    System.out.println("i:"+i);  
}  
複製代碼

  具體的代碼效果,大家可以放計算機裏跑一跑,才能弄明白到底是怎麼回事。

  三種循環到此就介紹完了,現在給大家說一下三種例子的具體使用場景:
  1.for一般是在循環個數已知的情況下使用的
  2.while一般是在循環個數未知,且循環受到嚴格控制的情況下使用的。
  3.do-while一般也是在循環個數未知,但是它和while最大的不同點在於,不管循環的條件是什麼,do-while都會至少執行一次。
  
  3.多重選擇:switch語句
  這裏還介紹一種控制語句,叫做switch,主要用於處理多個選項,比如說,根據ABCD四個等級給出四個評語,如果用if-else語句會顯得有些笨拙,尤其當需要判斷的選項很多時,會更加明顯。
複製代碼
Scanner in = new Scanner(System.in);
System.out.print("Select a mark(A,B,C,D)");
char mark = in.next();
switch(mark){
    case 'A':
        System.out.println("Wonderful!");
      break;
case 'B': System.out.println("Great!");

     break;
  case 'C': System.out.println("Good!");
        break;
  case 'D': System.out.println("Not Bad!");
      break;
  default: System.out.println("Error Input!");
      break;
}
複製代碼

  這裏先讀取你輸入的字母,然後switch語句會將它與case裏的條件一一對比,直到找到相符的項,然後執行後面的代碼.。如果你輸入的是ABCD之外的字母或是其他內容,由於沒有項與其匹配,則會執行default部分的代碼,輸出”Error Input“。這裏的每一句case後面都跟了一句break,如果不加break,則會順序執行,直到遇到break或者全部執行完畢。

  至此,本篇內容結束,歡迎大家繼續關注。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章