2018年10月31日 星期三

Java SE 入門教學 - 判斷式與迴圈

更新時間:10/31/2018

前言

人腦比電腦更具思考能力,但重複的工作時間一長,人類就比不上電腦了!繁雜的事情就交給電腦處理,如何安排工作就交給人腦吧!

一、判斷式

電腦執行是一個指令一個指令按照順序執行下去,是不會轉彎的~ 使用判斷式讓程式轉彎吧!

1.1 if 判斷式

◉ if{ }
◉ if{ ... }else{ ... }
◉ if{ ... }else if{ ... }
◉ if{ ... }else if{ ... }else if{ ... }
◉ if{ ... }else if{ ... }else if{ ... }else{ ... }
◉ 只有一句需要執行的語句時,可以省略{}

Scanner 為 Java API,用來讀取資料。
new Scanner(System.in) 建立 Scanner 實例,括號內的 System.in 說明資料來源是從鍵盤輸入。
import java.util.Scanner; 在 Java 中我們使用 . 表示層次結構,所以此聲明將表示 java\util\Scanner。完整的意思是引入 java 資料夾中 util 資料夾中的 Scanner 類別。

輸入兩個數字,根據輸入的兩個數字來決定輸出哪一條語句。


上述的程式碼第10行~第20行可以改寫成 if{ ... }else if{ ... }else{ ... } 形式。


還有幾個 if 的範例可以參考~

◉ 測量體重是否標準

◉ 測量體重是否標準(不分男女)

◉ 測量體重是否標準(BMI)

1.2 switch 判斷式

◉ switch(X){
  case y1:
   ...
   [break;]
  case y2:
   ...
   [break;]
  default:
   ...
 }

◉ X 可以使用的型態為:byte、short、char、int、Enum Type、String、Character、Byte、Short 和 Integer。

◉ 小心 case 穿透,需要配合 break 語句。

◉ 多個 case 可以合併。

◉ default 可以省略,但不推薦省略。


相同語句可以合併,我們把 1 月搬移到 12 月後,刪除某些 break 斷點,簡化程式碼,如下所示:


還有幾個 switch 的範例可以參考~

◉ 判斷月份有幾天

◉ 四則運算,判斷運算符號

二、循環語句

有時候事情要做很多次,或每次只有一點點的差異時,就請電腦傻傻的快速完成它吧!

2.1 while 循環語句

不知道何時終止,使用 while 迴圈。

先判斷邏輯表達式的值。若為 true 則執行其後面的語句,然後再次判斷條件並反覆執行,直到條件不成立為止。

2.2 do while 循環語句

不知道何時終止,且至少要執行一次的,使用 do while 迴圈。

先執行語句,再判斷邏輯表達式的值。若為 true 再執行語句,否則結束迴圈。

2.3 for 循環語句

如果知道執行的次數,我們將使用 for 迴圈。

首先執行(1)初始化迴圈的控制變數後,就重複執行(2) → (3) → (4)。


for 迴圈中(1)、(2)、(4)表達式不一定要放在括號內,接下來要來討論特殊的寫法。

◉ 省略初值與遞增式


◉ 省略判斷式
(請按 Ctrl + C 停止程式)


2.4 break 和 continue 語句

◉ break 語句用於終止某個語句的執行。用在循環語句中,可以強行退出迴圈。


◉ continue 語句用在循環語句中,用於終止某次循環過程,跳過迴圈中 continue 語句下面未執行的循環,開始下一次循環過程。


三、綜合運用

混合判斷式與循環語句,會擦出什麼火花呢?

3.1 當循環語句碰到 switch

◉ 在 switch 內加上 continue。(功能正常)


◉ 在 switch 內加上 break。(無法跳出迴圈)


◉ 如果在 switch 內加上 break 時,想要跳出迴圈,必須搭配「標籤」名稱使用。


3.2 兩層迴圈與 break

◉ 只跳出內迴圈


◉ 加上標籤名稱


◉ 加上標籤名稱 + 大括號


3.3 一些綜合範例

◉ 分數使用等第(A、B、C、D、E)


◉ 找尋三位數的阿姆斯壯數


◉ 骰骰子,統計各點數出現的次數


總結

判斷式:if、switch
循環語句: while、do while、for,控制迴圈的兩個指令 continue 與 break
標籤名稱:

流程控制可以讓程式照著自己的想法彈性運作,好好掌握基礎語法後,就可以把想法實現出來唷!





沒有留言:

張貼留言