Java programing Java programing

Java 程式設計上課教材

Java 程式設計上課教材 > 課程內容 > 第 2 堂課 - java 程式架構與基本觀念

第 2 堂課 - java 程式架構與基本觀念

上次更新日期 2018/07/29

資傳系就是以資訊技術來進行數位內容傳播的科系,因此同學們會經常使用到網路來傳遞你所設計的數位內容。那數位內容當然就是主要透過操作電腦來完成的, 包括課堂上經常使用到的修圖軟體 phtoshop、排版軟體 Illustrator、3D 建模軟體 Blender、網頁製作編輯器 notepad++ 等等,你要操作這些軟體當然得要有電腦! 而你的電腦資源到底能不能讓你順利的完成你的數位內容製作?你的網路到底能不能通行?這都跟作業系統有關!而作業系統又跟硬體有關! 所以,這些內容我們最好都能學習。

  • 2.0: 英打練習與上週作業執行
  • 2.1: java 程式撰寫的注意事項
  • 2.2: java 程式結構初探
  • 2.3: java 輸出中文的解決方法
  • 2.4: 解決問題的流程與簡單範例
  • 2.5: 以彈出式視窗呈現結果
  • 2.6: 整數與小數
  • 2.7: 課程中練習
  • 2.8: 參考資料
  • 2.9: 課後練習

2.0: 英打練習與上週作業執行

資訊科技的技術,如果不是老闆,生產力人員 (就是你我) 通常不會只使用手持式裝置,至少會使用到各式鍵盤。因此,打字就非常重要, 好的打字速度帶你上天堂,差的打字速度讓你呆成糖 (蟲的台語,慢吞吞之意)!關於打字練習的重要注意事項請參考第 0 堂課的說明, 同時,請花 10 分鐘完成第 0 堂課的英文打字練習。完成之後,請打開你的 notepad++ 軟體,輸入底下的字串喔!

C:\Users\dic\java>javac haha.java↵
haha.java:2: error: class hello is public, should be declared in a file named hello.java↵
public class hello {↵
unit02_3_1.java:1 error umappable character (0xE5) for encoding x-windows-950↵
↵
C:\Users\dic\java>javac -encoding utf8 unit02_3_1.java↵
System.out.println("My average score"+(79+85+91+65+88)/5);↵
↵
import javax.swing.JOptionPane;↵
public class unit02_5_1 {↵
	public static void main (String args[]) {↵
		JOptionPane.showMessageDialog(null, "My average score"+(79+85+91+65+88)/5 );↵
	}↵
}↵
↵
JOptionPane.ERROR_MESSAGE↵
JOptionPane.INFORMATION_MESSAGE↵

你不需要複製貼上,這單純是要讓你的打字速度變快!所以不要太緊張!練習就對了!沒練習完畢?沒關係,有空繼續練習即可!

  • 上週作業的執行

請從 class.vbird.tw 上面下載你上週的作業 java 文字檔,然後先行編譯成功後,等待老師過來查閱是否編譯成功與執行成功! 若執行成功,在你的作業成績會打 v !

2.1: java 程式撰寫的注意事項

先讓我們回到第一堂課的 hello.java 原始碼的內容查看一下 java 程式的主要結構:

// Hello World
public class hello {
	public static void main (String args[] ) {
		System.out.println ("Hello World!!");
	}
}

開始解析 java 的程式結構之前,你需要注意到幾件重要的事情:

  • 檔名必須要與 public class 後面接的名稱一樣
    以這個案例來說,我們在 public class 後面接了 hello 這個類別名稱,那麼檔名就一定要寫成 hello.java 才行, 否則這個程式就不會編譯成功。例如鳥哥將上面的程式碼重新儲存成為 haha.java 之後,並對 haha.java 進行編譯, 編譯會失敗,然後會出現底下的錯誤訊息喔!
    C:\Users\dic\java>javac haha.java
    haha.java:2: error: class hello is public, should be declared in a file named hello.java
    public class hello {
           ^
    1 error
    # 上面的錯誤訊息,大意是,因為 public class 名稱為 hello,所以請定義檔名為 hello.java!
    
  • 英文大小寫是不同的
    其實,除了 windows 系統之外,大部分的系統對於英文的大小寫判斷,大多數都是將英文大小寫視為不同。 包括未來大家會經常接觸的 javascript 這些腳本程式語言,對於大小寫都有很嚴格的限制!包括 Linux 對於檔名的定義, 都不太相同。例如上面的程式碼中, System.out 就不能寫成 SYSTEM.out ,也不能寫成 system.out 喔! 一般來說,第一個英文字母大多數為小寫就是了!
  • 全形與半形是不一樣的資料
    基本上,中文輸入的全形文字就是一種『純文字』的概念,所以,除非是在顯示的資訊裡面,否則,請不要使用到全形文字! 舉例來說,你要對齊,請使用 [tab] 來推開文字,不要用全形空白字元!你要完成每一段落的結束,請使用半形分號 (;) 不能使用全形分號 (;), 否則就會產生失敗。 (全形空白是最嚴重的問題!因為它很難在編輯器上面被察覺!所以,請絕對不要使用啦!)
  • 程式碼最好都要加上註解 (//)
    你會看到上面整段程式碼第一行有兩條連在一起的雙斜線,兩條斜線連在一起那就是『註解』的意思,也就是說,接在後面的資料都是註解的功能, 並不會被載入成為執行串。這個註解很有用的!不管是誰,寫了程式之後,久了疏於維護,就會忘記該程式碼的功能與意義。 所以,針對每行程式碼增加詳細的註解,是很好的習慣!另外,如果註解的資料超過一行以上,可以使用 /* ... */ 來包含註解文字!
    /*
       開始註解的資料
       一直講不完的註解資料
    */
    
  • 程式碼對齊與縮排
    你會發現上面的程式碼,每一行都會向右邊縮排,例如第 1 個 public 對應到最後一行的 } 是在最左邊, 第 2 個 public 對應倒數第 2 個 },而 System.out.println 則在最右邊。這麼做的原因是為了方便未來 debug 之用的! 因為你可以很輕易的就找出有問題的程式段,而且知道該程式段所在的函數名稱!請養成良好的習慣。 鳥哥喜歡用 [tab] 按鈕向右推開,你也可以自己補上幾個空白鍵,隨個人喜好囉。
  • 每一行程式碼的結尾都要補上分號 (;):
    這個是 java 與 javascript 以及 C 或者是 PHP 等程式語言的語法,在實際執行的程式段最後,都要加上分號來作為該段程式的結尾。 也就是說,其實程式碼是可以寫兩行的!但是程式碼的結束,就是依據分號來判斷的!這個要先注意才行喔!
  • 使用變數盡量加上自己的暱稱,避免與保留字重複:
    未來我們才會談到保留字,例如上面程式碼裡面就已經用到的 public, class, void, static...,這些保留字是有意義的, 如果被你用成變數,那可能會造成程式碼的誤判!因此,以鳥哥的暱稱 vb 來說,我就喜歡加上類似『 vbname = 』之類的變數名稱, 就能躲避可能造成的名稱重複的問題。

上述的注意事項要經常複習,因為不只 java 程式語言是這樣的,其實所有的程式語言,甚至網頁設計的 HTML 與 CSS 都建議這樣處理! 所以,一開始養成良好習慣,未來許多資訊方面的技術都可以用的上!

測試一下底下的內容,並建立檔名 unit02_1_1.java 的檔案,將這個檔案內容完整的貼上,並且儲存。
// Hello World
public class unit02_1_1 {
	public static void Main (String args[] ) {
		System.out.println ("Hello World!!");
	}
}
之後開始測試:
  1. 能不能 javac unit02_1_1.java 編譯成功?為什麼?
  2. 能不能 java unit02_1_1 執行?為什麼?

2.2: java 程式結構初探

初學者一定要先知道 java 的程式結構,你不要問為什麼!這個是需要背下來的程式碼結構!雖然如此,不過你還是可以稍微分析一下這些程式碼的中文意義, 大概的初步理解一下程式碼結構的意義。如下所示,一開始 java 程式碼就需要宣告一個類別的名稱,而且該名稱最好能與執行的內容有點相關。 此外,該類別名稱需要與 java 檔名相同。

// Hello World
public class hello {
	public static void main (String args[] ) {
		System.out.println ("Hello World!!");
	}
}

如果以中文來展示,上述的第一行內容有點像這樣:

// Hello World
公開的  類別  此類別的名稱 {
	在此類別名稱底下的程式碼區段
	...
}

定義好 java 一開始所需要的類別名稱之後,再來則是在此類別底下的各個程式碼。不過程式碼必須要包含在某個運作的函數方法 (Method) 中, 而這個方法則是程式的進入起始點。想個常見的情況好了,在資傳系你要使用系上的公用電腦,必須要輸入你的帳號與密碼才可以。 所以,登入 windows 的這個『方法』當中,你必須要『帶入帳號與密碼』這兩個參數,如果登入成功,螢幕就會『回傳歡迎訊息』, 你也可以不要有歡迎訊息,直接來操作系統。好!來看看底下的程式碼:

// Hello World
public class hello {
	public static void main (String args[] ) {
		System.out.println ("Hello World!!");
	}
}
  • static :翻譯做唯一的,也說是靜態的,不需要額外建立物件。
  • void :不需要回傳值
  • main :就是『方法』的名稱。第一個程式執行方法一定是要用 main 這個名稱!
  • String args[]: 傳入此方法的參數值,寫入中括號內 [] ,也可以像本例是空的 (不傳值)!

用中文來解釋的話,這一行有點像這樣:

// Hello World
公開的  類別  此類別的名稱 {
	公開的  靜態的  不須回傳值  方法的名稱  (帶入於此的參數) {
		在此方法名稱底下的程式碼區段
		...
	}
}

一般來說,初學者只要知道一切都使用 main 這個方法名稱就好了!而且暫時都不要輸入參數,因此保留 String args[] 這個關鍵字就好了! 也就是說,基本上整個程式區段的前兩行是需要背誦記憶的,初學者會改變的只有類別名稱而已~這部份先『背』下來喔!未來就會習慣成自然了!

最後,在類別與方法內部開始,就是一行一行的程式碼了!我們第一個學習的程式碼是『將字串印到螢幕上』這個程式, 也就是『 System.out.println ("字串在這裡"); 』這樣的程式碼了。最終若編譯可以成功,那麼結果就能夠印出我們所寫的字串資料到螢幕上!

最終,我們透過 javac 來進行編譯,亦即是『 javac hello.java 』這個指令串,並且產生 hello.class 這個 java byte code 指令檔。 而使用 java 來執行編譯成功的 hello.class 這個 java byte code!但是要注意!執行時不要加上 .class,也就是要使用『 java hello 』來執行, 不能用『 java hello.class 』來執行的意思!

  • 所有方法的進入點: main 主方法

再次強調,一般 java 程式會需要 (1)宣告類別名稱,以及 (2)宣告方法。在這兩個大括號 {{ }} 裡面的就是程式碼。

// Hello World
public class hello {   <==檔名必須為 hello.java 的意思
	public static void main (String args[] ) {
		System.out.println ("Hello World!!");  <==程式碼在兩個大括號內部
	}
}

而所有的方法當中,第一個被執行的方法就是 main (main 這個字的中文為『主要』的意思) 這個方法名稱!所以,如果你什麼都不知道,那麼就背下來~ java 程式碼的前兩行當中,第一行的 class 名稱規定為檔名,第二行方法的名稱就規定一定是 main,這樣寫 java 程式時,至少一開始就不會出現問題!

我想要執行『 java unit02_2_1 』這個指令,然後會出現『 Hello Unit II 』這樣的字樣。查詢了上述的語法,建置了底下的文件檔:
// My Hello to unit II
public class Demo1 {
	public static MAIN {String args[] } {
		system.out.printin ("Hello Unit II")
        // print my data
	}
}
請依據編譯後的問題,將這個檔案處理妥當!要注意我預計執行的指令以及輸出的結果喔!同時,有問題請查閱螢幕資訊, 另外,也請查看上述的 java 結構說明喔!

基本上,檔名請不要出現減號 (-),所以,鳥哥這邊使用底線作為一個範本。

2.3: java 輸出中文的解決方法

我們畢竟是繁體中文的俘虜,許多時刻,我們在程式碼裡面的註解或者是輸出的資訊,很可能都會使用到中文字型! 如果有中文字型時,可能系統連編譯都不會通過!例如底下的範本:

// 解決中文問題
public class unit02_3_1 {
	public static void main (String args[] ) {
		System.out.println ("Hello 我的第二堂課");
	}
}

當你進行『 javac unit02_3_1.java 』時,系統可能會出現類似底下的錯誤訊息:

unit02_3_1.java:1 error umappable character (0xE5) for encoding x-windows-950

關鍵字是『 umappable character ... encoding 』!那個 encoding 的中文就有文字編碼的意思! 也就是說, java 系統不認識這種編碼格式啦!那回到原本我們編輯這個檔案的 notepad++ 的內容,你點選上方工具列的『編碼』, 預設的編碼為『UTF-8』啊!但是從上面的編譯錯誤訊息,我們發現到檔案編碼是 x-window-950 就是簡稱 CP950 的常見台灣編碼。 因為如此,所以 java 沒辦法聰明到幫我們主動的處理好編碼問題啦!那怎辦?

事實上 java 常見的支援的編碼有很多,與中文相關的大概有:

  • Big5
  • CNS11643
  • EUC_TW
  • MS950 或 CP950
  • Unicode
  • UTF8

因為剛剛查看後,我們知道我們的程式編輯器使用的是 utf8 這個編碼格式,所以,你可以在編譯的時候,強迫 java 使用 UTF8 來編碼即可! 使用的格式為:

C:\Users\dic\java>javac -encoding utf8 unit02_3_1.java
請完成下列動作:
  1. 如果程式碼當中有中文,且使用的中文編碼為 utf8,那麼該如何下達 javac 的參數?
  2. 請將上述的範本完成後,並且執行該編譯完成的資料,看看能不能順利的輸出中文資料?

2.4: 解決問題的流程與簡單範例

學習程式語言的目的在於訓練邏輯概念,此外,也有訓練自己找到解決方案的能力。程式語言可以做比較大量的運算,也能夠將你平時可能會做到的日常工作, 變成使用一鍵完成的功能~所以,學學是不錯的。那麼,一般來說,你要如何用程式語言去解決一些問題呢?基本上的流程有點像這樣:

  1. 分析要解決的問題
  2. 找出解決問題的步驟,如果涉及到數學方面的計算,通常就稱為演算法 (Algorithm)
  3. 根據第 2 點來找出對應的程式語言之程式碼,開始程式設計
  4. 設計完畢開始測試執行 (testing),看看能否解決該問題
  5. 如果測試結果不對,則回去第 3 步驟開始重新程式設計,直到結束。此步驟稱為 debug

基本上,如果一切順利,通常到第 4 步驟後就結束了!不過,總是想的與做的會不一樣,因此,常常會有意想不到的錯誤會發生, 例如中文編碼錯誤、突然有空白字元等等的。因此,就需要有 debug 的情況啦~通常,程式設計師的功力,大概就從 debug 的時間看出來的...

  • 從螢幕上輸出文字的處理方案

假如今天我要在螢幕上面輸出底下的兩行文字,那麼依據上述的處理流程,應該怎麼辦呢?

白日依山盡 黃河入海流
欲窮千里目 更上一層樓
  1. 分析問題:發現到共有兩行文字要輸出,而且是中文字,沒有其他計算式,所以可以單純使用螢幕輸出指令即可。
  2. 解決步驟:很簡單,就依序將兩行文字帶入程式碼當中輸出即可。
    1. 宣告類別名稱為 unit02_4_1 (就是檔名)
    2. 開啟方法為 main 的程式
    3. 透過 System.out.println 開始輸入兩行文字
    4. 關閉 main
    5. 關閉類別
  3. 程式設計:雖然可以簡單的從上面的許多程式碼複製過來,不過還是希望同學們自己按照上述的 A, B... 來思考, 然後輸入相對應的程式碼,這樣不但可以練習英文打字,還能夠對程式更有印象!好了,那麼上述的第 C 是什麼呢?有點類似如下:
    System.out.println("白日依山盡 黃河入海流");
    System.out.println("欲窮千里目 更上一層樓");
    
  4. 編譯、執行與測試:開始測試執行流程。過程可能會出現中文字型編碼錯誤的問題,請依據 javac 的可帶入的選項與參數處理編碼!

請依據上述的說明,建立好名為 unit02_4_1.java 的程式,編譯並且執行『 java unit02_4_1 』,看看能不能夠印出兩行中文出來!?

讀者們到現在為止,已經碰過太多的 System.out.println ,這個指令碼如果硬要記憶,你會覺得很疲憊!那怎麼記最快?你可以將他拆解成『 system output print line 』,中文簡單的解釋為:『系統輸出時,請印出一整行的內容』的意思。所以,如果有兩行的時候,就請寫兩次即可!

  • 從螢幕上輸出運算結果的處理方案

假設今天你有一個比較麻煩的運算,例如你的學習成績平均值。假設成績為 79, 85, 91, 65, 88 五科成績。

  1. 分析問題:雖然有運算,不過運算還算簡單,我們可以透過一個簡單的算式來輸出即可。
  2. 解決步驟:其實使用的算式就是 (79+85+91+65+88)/5 這樣而已。並將結果以 System.out.println 輸出即可。
    1. 宣告類別名稱為 unit02_4_2 (就是檔名)
    2. 開啟方法為 main 的程式
    3. 透過 System.out.println 直接加入文字與運算的算式在內,但是可能要透過連結符號處理資料的輸出
    4. 關閉 main
    5. 關閉類別
  3. 程式設計:System.out.println 的括號裡面不見得一定要加上雙引號,如果是計算式,那麼該程式碼可以把結果直接輸出喔!有點像這樣:
    System.out.println("我的平均成績:"+(79+85+91+65+88)/5);
    
  4. 編譯、執行與測試:開始測試流程。

從上面的實驗中,我們也能知道,在 System.out.println 的括號內,如果資料要連續輸出,中間可以使用加號 (+) 來連結在一起! 這也是個很重要的實驗!請同學們完成上述的程式運作喔!

承上,如果你想要列出類似:『我的平均成績: 81 分 』這樣的顯示,亦即最後面多一個『分』數這樣,該如何處理?

2.5: 以彈出式視窗呈現結果

許多時候我們可能不會想要直接在剛剛的 MSDOS 視窗呈現結果,而是想要透過彈出式視窗來顯示這個結果,這時該如何是好? 事實上 Java 已經提供了許多的『外掛』程式讓我們來呼叫使用,直接使用 Java 內建好的界面來處理即可!最簡單的方式,就是呼叫出一個 Java Option Panel (Java 選單面板) 來實做即可!

要讓 java 程式匯入一個套件 (package) ,可以使用 import 來處理即可。而我們想要顯示的訊息視窗,為透過 javax.swing.JOptionPane 這個套件。 而要讓這個套件顯示訊息,就得要使用 show Message Dialog (顯示訊息視窗) 來處理!所以,整體來說,就會變成這樣:

import javax.swing.JOptionPane;
....
	JOptionPane.showMessageDialog(null,"基本訊息","標題資訊",小圖示);
....

特別注意,上面的訊息資料要用雙引號喔!至於常見的小圖示有:

  • JOptionPane.ERROR_MESSAGE
  • JOptionPane.INFORMATION_MESSAGE (預設值)
  • JOptionPane.WARNING_MESSAGE
  • JOptionPane.QUESTION_MESSAGE
  • JOptionPane.PLAIN_MESSAGE
  • 使用彈出式視窗來顯示你的平均成績

讓我們將剛剛前一個小節的成績計算結果,用彈出式視窗來展示,所以:

  1. 問題解析:因為需要彈出式視窗的功能,所以需要引用到 javax.swing.JOptionPane 的功能
  2. 解決步驟:首先在 public class 之前,就要透過 import 將上述的 Java 選項面板套件呼叫進來, 之後將 System.out.println 的地方,改成 JOptionPane.showMessageDialog(null, 訊息) 的模樣,就能夠呼叫彈出式視窗來顯示了。
    1. 匯入 JOptionPane 的套件
    2. 宣告類別名稱為 unit02_5_1 (就是檔名)
    3. 開啟方法為 main 的程式
    4. 透過 JOptionPane.showMessageDialog 的方法,以彈出式視窗顯示運算結果
    5. 關閉 main
    6. 關閉類別
  3. 程式設計:基本上,可以這樣設計程式即可:
    // 嘗試使用 Java Option Panel 面板的功能,用以呼叫彈出式視窗
    import javax.swing.JOptionPane;
    public class unit02_5_1 {
    	public static void main (String args[]) {
    		JOptionPane.showMessageDialog(null, "我的平均成績:"+(79+85+91+65+88)/5 );
    	}
    }
    
  4. 編譯、執行與測試:如果出現錯誤,記得回去修改 unit02_5_1.java 檔案的內容後,再次重新編譯即可。如果一切順利,就會出現如下的彈出式視窗。 參數面板設計

基本上,你可以將文字組合起來看,第一個英文不見得會是大寫,但是在一串程式碼當中,每個字的字首通常會是大寫字元!例如 j option pane 會寫成 JOptionPane, 而 show message dialog 就會變成 showMessageDialog 的意思!這樣先進行部份拆解,然後不懂的英文就丟進 google 翻譯查詢一下,然後花幾分鐘背誦一下該英文字, 那等到將該英文背誦下來,你的程式就不會太難過了!

嘗試將上述的結果輸出成為類似如下的圖示:將圖中的人名改成你的名字即可!
參數面板設計

2.6: 整數與小數

有些時刻我們可能需要使用一些程式來幫我們計算出有用的數據,舉例來說,算出溫度的華氏、攝氏溫度,就是個有趣的例子! 現在,讓我們複習一下,溫度單位的轉換是這樣的:

  • °F = 9 / 5 * °C + 32
  • °C = 5 / 9 * ( °F - 32 )

你要記得的是, -40 度時,華氏與攝氏溫度會剛剛好一樣!所以驗證可以帶入該參數即可。好,現在讓我們來計算一下, 當大聯盟打棒球時,溫度顯示 81 °F 時,代表溫度是幾度 C 呢?

  1. 問題分析:要計算溫度的單位轉換,由於是 °F 轉成 °C ,因此要用上面的第二個算式來處理即可。
  2. 解決步驟:相對簡單,不需要使用彈出式視窗,所以直接使用 System.out.println 即可!
    1. 宣告類別名稱為 unit02_6_1 (就是檔名)
    2. 開啟方法為 main 的程式
    3. 透過 System.out.println 搭配上述的公式即可處理
    4. 關閉 main
    5. 關閉類別
  3. 程式設計:參考前述的資料,帶入 5 / 9 * ( 81 - 32 ) 即可。相關的公式有點像這樣:
    System.out.println ("81 度 F 轉成攝氏為: " + 5 / 9 * (81-32) + " 度 C");
    
  4. 編譯、執行與測試:開始測試與分析。

經過編譯並且執行之後,你會發現到,見鬼了! 81 °F 變成 0 °C 了!怎麼會這樣?這是由於我們上面的數型態啦! 因為我們的數值都沒有小數點,因此 java 會預設使用整數來處理,所以就會變成上述的模樣!一片慘兮兮~因為 5/9 小於 1 的緣故,所以此時就會變成 0 , 所以 0 乘上任何數,就都會變成 0 囉!就這麼簡單...

那怎麼辦?很簡單!將每個數值後面加上 .0 即可!亦即改成類似 5.0 / 9.0 * ( 81.0 - 32.0 ) 就好了!不相信嘛? 請重新訂正上述的程式碼,重新編譯後計算,看看結果就知道了!

也就是說,其實數值的格式是很重要的!不只在 java 才這樣,很多的傳統語言如果你沒有給予正確的數值格式, 最終的結果就是錯誤的要命!

我想要計算梯形的面積,梯形面積的口訣是『 (上底+下底)x高÷2 』,並依據底下的圖檔,寫出一個名為 unit02_6_2.java 的程式碼, 最終執行 java unit02_6_2 會計算出這個圖形的『面積』。(還是需要依據分析問題、解決問題的步驟、撰寫程式碼、執行等步驟來執行喔!
計算梯形面積

2.7: 課程中練習

練習是成為高手的捷徑~多做多寫就對了!所以,請嘗試依據完成底下的幾個題目的練習。同時練習時,請務必使用 (1)分析問題 (2)找出解決問題的步驟 (3)開始撰寫程式碼 (4)編譯執行測試 (5)若有問題就繼續回去步驟 2 ~ 4 的流程。

  • 完成客製化輸出

有時候為了傳達某些特殊符號,我們可以使用程式來輸出一些文字的排列。例如底下的排列,可能可以適當的表達你的愛意... 請寫出一隻名為 unit02_7_1.java 的程式,當你執行『 java unit02_7_2 』的時候,就會在畫面上輸出底下的排列。

     L        O     V     V  EEEEE
     L      O   O    V   V   E   
     L      O   O     V V    EEEEE
     LLLL     O        V     EEEEE

Hint:不要想太多,很單純的將畫面擷取列印而已!我們還沒有寫到迴圈與其他程式,所以...不要想太多!

  • 計算 π 值

計算 π 的方法為『 4 x ( 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ...) 』我們現在要計算近似值,請撰寫一隻名為 unit02_7_2.java 的程式, 當執行『 java unit02_7_2 』 的時候,會輸出如下的畫面:

pi = 4 x (1-1/3+1/5-1/7+1/9) = 計算的結果
pi = 4 x (1-1/3+1/5-1/7+1/9-1/11+1/13) = 計算的結果

其中計算的結果是真的計算出來的值,不是單純輸出中文字!基本上,那個值越接近 3.1415... 會越好!

  • 圓的週長與面積的計算

基本上,圓的週長與面積,可以透過底下的公式來計算,當然,都與半徑 R 有關:

  • 面積: π x R2
  • 週長: 2 x π x R

根據上面的公式,撰寫出名為 unit02_7_3.java 的程式碼,當執行『 java unit02_7_3 』時。會輸出類似底下的樣子:

R = 5.5
Area = pi x R x R = 計算的結果
Perimeter = 2 x pi x R = 計算的結果

2.8: 參考資料

2.9: 課後練習

先查閱 1.3 小節的介紹,了解雲端系統的登入、繳交資料檔名等等的設計,然後再繼續底下的習題。 最終要上傳的檔案有:

  • unit02-4070CXXX-你的名字.docx
  • unit02_java.java (純文字檔)
  • unit02_myname.java (純文字檔)
  • unit02_marathon.java
  1. 看完本章的內容後,完成底下的問題回答:
    1. 假如我有一個 java 的程式碼如下,這個檔案我應該要儲存成什麼檔名?
      public class say_ya {
      	public static void main (String args[] ) {
      		System.out.println ("哈囉!我是 ya!");
      	}
      }
      
    2. 承上題,假設這個檔案的中文編碼為 utf8,那麼如何下達編譯的完整指令?
    3. 承上題,如果我將 main 改成 onlyone 之後: (1)能不能編譯成功? (2)能不能順利執行?為什麼?
    4. 一般來說,使用程式語言在幫我們完成某些任務,課程中談到,要完成任務的流程是那五個步驟?
    5. 你要的檔名是 showmecode.java 這樣,然後執行此 java 程式最後只是輸出『 show me the code 』, 你覺得程式碼可以怎麼寫?將程式碼寫下來。(不必執行)
    6. 在 java 的計算過程中, 1/5 與 1.0/5 的結果分別是多少?為什麼?
    7. 如果要呼叫出彈出式視窗,一般來說: (1)要載入那一個套件 (package)? (2)單純顯示訊息視窗,應該要執行那一個語法?
  2. 建立一個名為 unit02_java.java 的檔案,當執行:『 java unit02_java 』時,會出現如下的結果:
    我愛 JAVA
    
         J     A     V     V    A   
         J    A A     V   V    A A  
     J   J   AAAAA     V V    AAAAA 
      JJJJ  A     A     V    A     A
    
  3. 建立一個名為 unit02_myname.java 的檔案,當執行:『 java unit02_myname 』時,會出現如下的圖示:
    習題
    畫面中,請填寫你的姓名與學號!
  4. 參考底下的連結,找出 (1)馬拉松的距離與 (2)世界最佳成績 這兩個數值,然後計算出這個世界紀錄中,換成速度是每小時幾公里? 另外,換成跑速,是每公里跑幾分鐘?這個程式碼的檔名請設定為『 unit02_marathon.java 』,執行的結果有點類似底下的模樣: (程式碼裡面一定要存在計算式)
    https://zh.wikipedia.org/wiki/马拉松
    長度為: XX.XXX 公里
    最佳成績: ?:??:??
    最佳成績時速: YY.YYYY 公里/小時
    最佳成績跑速: ZZ.ZZZZ 分鐘/公里