Java Basics Hi Hsiao-Lung Chan, Ph.D. Dept Electrical Engineering Chang Gung University, Taiwan chanhl@maili.cgu.edu.twcgu
執行環境 - eclipse 點選 eclipse 軟體執行檔 設定工作路徑 eclipse 開啟 2
建置 Java 專案 File New project Java a Java a project 輸入專案名稱 ( 其他選項使用預設設定即可 ) 所建置的 Java 專案 3
建置 Class 在所建置專案 src sc 的地方點擊滑鼠右鍵 New Class Cass 輸入 Class 名稱 ( 其他選項使用預設設定即可 ) 註 : 若需要自動產生程式進入點則勾選 public static void main(string[ ] args), 否則需要自己手動輸入 點開所建置的 Class 就可以開始撰寫 Java 程式了 撰寫好 Java 程式點擊 Run Console 視窗就會出現執行結果了 4
執行環境 command window 開始 執行 輸入 cmd 開始 所有程式 附屬應用程式 命令提示字元 5
建置 Java 檔案 在 C 槽新增一個資料夾 進入新增的資料夾 在空白處點擊滑鼠右鍵 新增文字文件 工具 資料夾選項 檢視 先暫時不 隱藏已知檔案類型的副檔名 將文字文件.txt 的副檔名改成.java 恢復 隱藏已知檔案類型的副檔名 ( 避免不小心更改到重要檔案的副檔名 ) 6
編譯及執行 不同於 eclipse, command window 沒有按鈕可以編譯及執行, 所以需要下達指令 移動到 Java 檔案所在的資料夾 cd 編譯 Java 檔 javac 檔名.java 註 : 編譯成功後, 你會發現資料夾多了一個同名的.class 檔 執行該程式 java 檔名 7
編譯及執行 HelloWorld 範例 public class HelloWorld { public static void main(string[ ] args) { System.out.println("Hello! World!"); 8
Java 基本語法 Java a 流程控制 條件控制 迴圈控制 Java 類別方法 建立 Java 的類別方法 參數傳遞與傳回值 Java 陣列與字串 Java 例外處理 9
Java 流程控制 條件控制 public class test2 { public static void main(string[ ] args) throws java.io.ioexception { String str = ""; java.io.bufferedreader keyin; keyin = new java.io.bufferedreader(new java.io.inputstreamreader(system.in)); java.util.scanner keyin1 = new java.util.scanner(system.in); System.out.println(" 請輸入成績 : "); int grade = Integer.parseInt(keyin.readLine()); str = "if 是否選條件敘述 \n"; if (g grade >= 60 ) str += " 成績及格..." + "\n 分數 : " + grade; str += "\nif/else 二選一條件敘述 \n"; char type = 'm'; if ( grade >= 60 && type == 'm' ) str += " 課程 : " + type + "\n 成績及格 : " + grade; else str += " 課程不正確或成績不及格 "; 10
Java 流程控制 條件控制 System.out.println(" 請輸入時間 : "); int hour = Integer.parseInt(keyin.readLine()); str += "24 小時制 :" + hour + "="; hour = (hour >= 12)? hour-12 : hour; str += "12 小時制 : "+ hour; str += "\nif/else/if 多選一條件敘述 \n"; if ( grade >= 80 ) str += " 學生成績 A"; else if ( grade >= 70 ) str += " 學生成績 B"; else str += " 學生成績 C ; 11
Java 流程控制 條件控制 str += "\nswitch 多選一條件敘述 \n"; System.out.println( println(" 請輸入級別 : "); char gpagrade = keyin1.next().charat(0); switch (gpagrade) { case 'A': str += " 學生成績超過 80"; break; case 'B': str += " 學生成績超過 70"; break; case 'C': str += " 學生成績超過 60"; break; default: str += " 學生成績不及格 "; System.out.println(str); 12
Java 流程控制 條件控制 13
Java 流程控制 迴圈控制 public class test3 { public static void main(string[ ] args) { String str = ""; int total = 0; str = "for 計數迴圈 \n"; for ( int i = 1; i <= 10; i++ ) { str +=" " + i; total t += i; str +=" =" + total; str += \nwhile 迴圈敘述 \n"; int level = 1; int n = 1; while ( level <= 5 ) { n *= level; str += level + "!=" + n + "\n"; level++; 14
Java 流程控制 迴圈控制 str += "break 指令中斷迴圈 \n"; int i = 1; int sum = 0; do { str += " " + i; sum += i; i++; if ( i > 10 ) break; while ( true ); str +=" =" +sum; 15
Java 流程控制 迴圈控制 str += "\ncontinue 指令繼續迴圈 \n"; int sumodd = 0; for (int num = 1; num <= 10; num++ ) { if ((num % 2) == 0 ) continue; str += " " + num; sumodd += num; str +=" =" + sumodd; System.out.println(str); 16
Java 流程控制 迴圈控制 17
Java 類別方法 建立 Java 的類別方法 public class test4 { private static String str=""; public static void main(string[ ] args) { printtriangle(); System.out.println(str); private static void printtriangle() { int i, j; for ( i = 1; i <= 5; i++) { for ( j = 1; j <= i; j++) str += "*"; str += "\n"; 18
Java 類別方法 建立 Java 的類別方法 19
Java 類別方法 參數傳遞與傳回值 public class test5 { public static void main(string[ ] args) { int total, total1, total2; total = sumn2n(5, 15); total1 = sumn2n(1, 50); total2 = sumn2n(1, 100); System.out.println(" 從 5 加至 15= " + total + "\n 從 1 加至 50= " + total1 + "\n 從 1 加至 100= " + total2); static int sumn2n(int begin, int end) { int i; int total = 0; for ( i = begin; i <= end; i++ ) total += i; return total; 20
Java 類別方法 參數傳遞與傳回值 21
Java 陣列與字串 陣列 public class test6 { public static void main(string[ ] args) { String str = ""; int i, sum = 0; double average, total = 0.0; int[] temp; // 宣告陣列變數 int[] tips = {150, 200, 300; double[] sales = new double[4]; sales[0] = 145.6; // 第一季 sales[1] = 178.9; // 第二季 sales[2] = 197.3; // 第三季 sales[3] = 156.7; // 第四季 temp = tips; 22
Java 陣列與字串 陣列 // 使用迴圈顯示陣列值和計算總和 for ( i=0; i < tips.length; i++ ) { sum += temp[i]; str += " " + temp[i]; str += "\n 小費總計 : " + sum + "\n"; // 使用迴圈顯示陣列值和計算平均 for ( i=0; i < sales.length; i++) { total += sales[i]; []; str += " " + sales[i]; str += "\n 業績總和 : " + total; average = total/(double)sales.length; str += "\n 平均業績 : " + average; System.out.println(str); 23
Java 陣列與字串 陣列 24
Java 例外處理 public class test7 { public static void main(string[ ] args) { String str = ""; try { for (int i = 2; i > -1; i-- ) str += " 計算結果 : " + 6/i +"\n"; catch( ArithmeticException ex ) { str += " 例外說明 : " + ex.getmessage() + "\n"; finally { str += " 錯誤處理結束 \n"; str += " 程式結束!"; System.out.println(str); 25
Java 例外處理 26
Exercise 1 請實現 成績及格與否 >=60 成績及格 <60 成績不及格 成績分類 90 以上 :A 80-89 : B 70-79 : C 60-69 : D 59 以下 : E 若輸入成績超過 100 則顯示成績及格 :100 註 : 該系統雖可輸入課程. 姓名. 成績, 但只有在課程為 embsys 時才會執行, 否則只會出現提示 登錄課程不正確 27
Exercise 2 註 1 : 需在主程式呼叫副程式並將結果顯示在螢幕上註 2 : 需用例外處理的方式, 不可直接使用條件控制的方式輸出結果 撰寫一 副程式 用來計算多項式 (x^2+x+1)/x 的商數如果除 撰寫一副程式用來計算多項式 (x 2+x+1)/x 的商數, 如果除數為 0, 則丟出上圖所示的例外 28
Homework 撰寫一程式用來開啟 abc.txt 檔, 如果檔案不存在, 則丟出 File not found. Generate an exception and throw it. 29