<4D6963726F736F667420576F7264202D20BAF4BADEA457BDD2B1D0A7F75F4A415641B57BA6A1B2D52E646F63>



Similar documents
6-1-1極限的概念

Microsoft Word doc

所 3 學 分 課 程, 及 兩 門 跨 領 域 課 程 共 6 學 分 以 上 課 程 學 生 在 修 課 前, 必 須 填 寫 課 程 修 課 認 定 表, 經 班 主 任 或 指 導 教 授 簽 名 後 始 認 定 此 課 程 學 分 ) 10. 本 規 章 未 盡 事 宜, 悉 依 學 位

章節

證 券 簡 易 下 單 :2121 證 券 簡 易 下 單 1. 主 工 具 列 的 視 窗 搜 尋 器 直 接 輸 入 點 擊 主 選 單 證 券 專 區 下 單 特 殊 下 單 2121 證 券 簡 易 下 單 畫 面 說 明 1. 下 單 區 2. 個 股 行 情 資 訊 與

實德證券網上交易系統示範

Microsoft Word - 第四章.doc

<4D F736F F D20B3E6A4B830312D2D2DBCC6BD75BB50BEE3BCC6AABAA55BB4EEB942BAE22E646F6378>

CONTENTS 訓 練 內 容 設 計 法 056 淡 季 期 的 訓 練 058 旺 季 期 的 訓 練 060 針 對 爬 坡 賽 的 訓 練 內 容 062 賽 後 的 資 料 分 析 PART4/ 鏑 木 毅 先 生 的 建 言 活 用 於 越 野 路 跑 的 心 跳 訓

e-Submission System Quick Reference Guide for Publication Related Matters (Chinese version)

Microsoft PowerPoint - 資料庫正規化(ccchen).ppt

目 錄 項 目 內 容 頁 數 1 手 機 要 求 3 2 登 記 程 序 3 3 登 入 程 序 4 4 輸 入 買 賣 指 示 6 5 更 改 指 示 14 6 取 消 指 示 18 7 查 詢 股 票 結 存 21 8 查 詢 買 賣 指 示 23 9 更 改 密 碼 查 詢 股

第 6. 節 不 定 積 分 的 基 本 公 式 我 們 可 以 把 已 經 知 道 反 導 函 數 之 所 有 函 數 都 視 為 不 定 積 分 的 基 本 公 式 基 本 公 式 涵 蓋 的 範 圍 愈 大, 我 們 求 解 積 分 就 愈 容 易, 但 有 記 憶 不 易 的 情 事 研 讀

PowerPoint 簡報

Microsoft Word - ch07

Microsoft Word - Draft circular on Sub Leg Apr (chi)_Traditional

NCKU elearning Manual

(Microsoft Word - MOODLE990201\266i\266\245\244\342\245U )

四 修 正 幼 兒 園 師 資 類 科 應 修 學 分 數 為 四 十 八 學 分, 並 明 定 學 分 數 抵 免 之 相 關 規 定 及 規 範 修 習 幼 兒 園 教 育 專 業 課 程 之 最 低 年 限 ( 修 正 條 文 第 五 條 ) 五 發 給 修 畢 師 資 職 前 教 育 證 明

授 課 老 師 章 節 第 一 章 教 學 教 具 間 3 分 鐘 粉 筆 CNC 銑 床 教 學 內 容 CNC 銑 床 之 基 本 操 作 教 材 來 源 數 值 控 制 機 械 實 習 Ⅰ 1. 了 解 CNC 銑 床 的 發 展 2. 了 解 CNC 銑 床 刀 具 的 選 用 3. 了 解

目 錄 壹 題 目 1: 新 增 商 品 ( 商 品 名 稱 為 玉 井 芒 果 乾 禮 盒 )... 3 貳 題 目 2: 新 增 商 品 ( 商 品 名 稱 為 紅 磚 布 丁 精 選 禮 盒 )... 5 參 題 目 3: 新 增 商 品 ( 商 品 名 稱 為 晶 鑽 XO 醬 禮 盒 ).

內 政 統 計 通 報

寫 作 背 景 導 讀 [98] L Lyman Frank Baum

研究一:n人以『剪刀、石頭、布』猜拳法猜拳一次,決定一人勝

二 兒 歌 選 用 情 形 ( ) 2 ( ) ( )


目 錄 頁 1. 歡 迎 使 用 網 上 預 約 面 談 訪 問 系 統 新 用 戶 新 用 戶 登 入 帳 戶 程 序 啟 動 網 上 預 約 面 談 訪 問 帳 戶 核 對 帳 戶 的 地 址 資 料

投影片 1

肆 研 究 方 法 進 行 本 研 究 前, 我 們 首 先 對 研 究 中 所 用 到 名 詞 作 定 義 定 義 : 牌 數 : 玩 牌 時 所 使 用 到 撲 克 牌 數 次 數 : 進 行 猜 心 術 遊 戲 時, 重 複 分 牌 次 數 數 : 進 行 猜 心 術 遊 戲 時, 每 次 分

前 項 第 三 款 所 定 有 機 農 產 品 及 有 機 農 產 加 工 品 驗 證 基 準, 如 附 件 一 第 七 條 驗 證 機 構 受 理 有 機 農 產 品 及 有 機 農 產 加 工 品 之 驗 證, 應 辦 理 書 面 審 查 實 地 查 驗 產 品 檢 驗 及 驗 證 決 定 之

1

16

奇 妙 的 24 摘 要 從 撲 克 牌 中 隨 機 抽 取 4 張 牌 可 以 有 1820 種 牌 組, 在 這 1820 種 牌 組 中, 有 1362 組 可 經 由 四 則 運 算 的 方 式, 算 出 24 點, 有 458 組 無 解 快 速 求 解 的 方 法 有 相 加 法 因 數

校 長 遴 選 者 就 相 關 遴 選 事 項, 有 程 序 外 之 接 觸 遴 選 會 委 員 在 任 期 間 因 故 無 法 執 行 任 務 或 有 不 適 當 之 行 為 者, 由 各 該 主 管 機 關 解 聘 之 ; 其 缺 額, 依 第 一 項 至 第 五 項 規 定 聘 ( 派 ) 委

Microsoft Word - 雲林區_免試平台_國中模擬選填_操作手冊.doc

關 於 教 育 部 學 習 拍 立 得 教 育 部 於 (103) 年 度 整 合 各 縣 市 政 府 部 屬 機 構 大 學 及 民 間 的 數 位 資 源 與 服 務, 依 不 同 類 型, 分 別 匯 集 於 教 育 大 市 集 教 育 百 科 教 育 媒 體 影 音 教 育 部 學 習 拍

五 四 五 說 ( 代 序 ) 李 澤 厚 劉 再 復 I I II IV V VII 第 一 篇 五 四 新 文 化 運 動 批 評 提 綱 附 論 一 中 國 貴 族 精 神 的 命 運 ( 提 綱 )

會 員 專 區 使 用 手 冊 目 錄 一 基 本 介 紹 會 員 專 區 登 入 位 置 主 畫 面 與 網 站 架 構 : 功 能 導 覽 列 說 明 :... 3 二 DOI 查 詢 與 維 護... 4 三 DOI 註 冊 期 刊 類 型...

簽 呈

骨 折 別 日 數 表 1. 鼻 骨 眶 骨 ( 含 顴 骨 ) 14 天 11. 骨 盤 ( 包 括 腸 骨 恥 骨 坐 骨 薦 骨 ) 40 天 2. 掌 骨 指 骨 14 天 12. 臂 骨 40 天 3. 蹠 骨 趾 骨 14 天 13. 橈 骨 與 尺 骨 40 天 4. 下 顎 ( 齒

1

瑞興銀行

目 錄 一 系 統 登 入... 2 ( 一 ) 系 統 登 入 畫 面... 2 ( 二 ) 首 次 登 入 請 先 註 冊... 3 ( 三 ) 忘 記 單 位 帳 號... 8 ( 四 ) 忘 記 密 碼 ( 五 ) 健 保 卡 更 換 ( 六 ) 重 寄 確 認 信.

3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不

101年度社會福利方案 網路線上操作手冊


格 成 績 證 明 第 六 條 第 七 條 本 系 大 四 課 程 中 規 劃 日 本 韓 國 越 南 專 題 研 究, 學 生 需 於 大 四 時 修 習 該 課 程, 並 於 規 定 期 間 內 提 出 專 題 報 告, 取 得 合 格 成 績 證 明 本 系 規 定 學 生 畢 業 時 需 取

教育實習問與答:

BSP 烤箱 - 封面-2

(Microsoft Word - \246\250\301Z\272\336\262z.doc)

128 提 示 樞 紐 分 析 表 的 用 途 樞 紐 分 析 表 是 指 可 以 用 來 快 速 合 併 和 比 較 大 量 資 料 的 互 動 式 表 格, 透 過 它 可 以 詳 細 分 析 數 值 資 料, 特 別 適 用 於 下 列 情 況 : 需 要 從 含 有 大 量 資 料 的 清

題組一 文書排版

<4D F736F F D20B2C433B3B92020B971B8F4A4C0AA52A7DEA5A9>

二零零六至零七年施政報告

C CH4.tpf

支 持 機 構 : 社 會 文 化 司 主 辦 機 構 : 澳 門 學 聯 澳 門 青 年 研 究 協 會 電 話 : 傳 真 : 網 址 : 報 告 主 筆 : 李 略 博 士 數 據 錄

Microsoft PowerPoint - chap5


Microsoft Word - 立法會十四題附件.doc

Microsoft Word - 全華Ch2-05.doc

包 裝 維 生 素 礦 物 質 類 之 錠 狀 膠 囊 狀 食 品 營 養 標 示 應 遵 行 事 項 一 本 規 定 依 食 品 安 全 衛 生 管 理 法 第 二 十 二 條 第 三 項 規 定 訂 定 之 二 本 規 定 所 稱 維 生 素 礦 物 質 類 之 錠 狀 膠 囊 狀 食 品, 指

壹、組織編制 代碼:C0101意見反映

<4D F736F F D20AB6EAAF9B0EAA470BCC6BEC7ACEC2E646F63>

長跨距暨挑高建築特殊結構系統之調查分析

行政院金融監督管理委員會全球資訊網-行政院金融監督管理委員會

55202-er-ch03.doc

1

( 五 ) 財 務 會 計 理 論 研 討 3 學 分 ( 六 ) 審 計 理 論 研 討 3 學 分 ( 七 ) 管 理 會 計 理 論 研 討 3 學 分 第 四 條 選 修 科 目 : ( 一 ) 數 量 方 法 3 學 分 ( 二 ) 財 務 會 計 專 題 研 討 ( 一 ) 3 學 分

第二組掃描器規範書

1. 安 裝 1.1 手 機 端 安 裝 檔 (cab 檔 ) 請 您 將 下 載 的 cab 檔 案 複 製 到 手 機 內 任 一 資 料 夾, 在 手 機 上 點 擊 cab 檔 案 後 即 可 開 始 安 裝 點 擊 本 檔 案 即 可 開 始 安 裝 請 於 您 的 手 機 上 繼 續 安

文 ( 一 ) 閱 讀 理 解 英 語 數 學 社 會 自 然 及 國 文 ( 二 ) 語 文 表 達 等 各 科 此 外 嘉 義 區 則 另 外 單 獨 辦 理 測 驗 五 專 亦 有 辦 理 特 色 招 生 考 試 分 發 入 學, 與 高 中 高 職 分 開 辦 理, 但 成 績 同 樣 採

( 二 ) 輔 導 員 除 有 特 殊 情 形 外, 同 時 間 以 輔 導 一 人 為 原 則, 至 多 不 得 超 過 二 人 ( 三 ) 實 務 訓 練 機 關 ( 構 ) 學 校 於 實 務 訓 練 期 間 對 由 資 深 人 員 擔 任 之 輔 導 員 得 酌 減 業 務 五 輔 導 重

(Microsoft Word \245\277\244\361\273P\244\317\244\361.doc)

(3) 澳 門 特 別 行 政 區 之 稅 務 知 識 及 (4) 商 法 典 ( 二 ) 重 新 批 准 註 冊 為 註 冊 會 計 師 / 專 業 會 計 員 之 筆 試 科 目 如 下 : (1) 澳 門 特 別 行 政 區 之 稅 務 知 識 及 (2) 商 法 典 ( 三 ) 考 試 範

答客問

PROSPECT EXPLORATION 壹 前 言 第 9 卷 第 2 期 中 華 民 國 100 年 2 月

sle cover 1

課 程 簡 介 第 一 章 基 本 電 路 理 論 第 二 章 半 導 體 物 理 與 pn 接 面 二 極 體 元 件 分 析 第 三 章 二 極 體 電 路 分 析

(DP_MFP_Training

xls

第一章 緒論

修 課 特 殊 規 定 : 一 法 律 系 學 生 最 低 畢 業 學 分 128;101 學 年 度 修 讀 法 律 系 雙 主 修 學 生 應 修 畢 法 律 專 業 目 64 學 分 ( 限 修 習 本 校 法 律 系 開 設 課 程, 不 得 以 原 學 系 或 外 校 課 程 抵 免 -

<30332EAAFEA5F3A440A142A447A142A454A142A57CA147BEC7A5CDB14DB77EC3D2B7D3BEC7B2DFA661B9CF2E786C73>

教 師 相 關 ( 升 等, 依 業 務 需 002 交 通 管 科 評 鑑, 評 量, 徵,C031, 聘, 各 項 考 試 委 C051,C054, 員, 通 訊 錄 等 ),C057, C058,C063 各 項 會 議 紀 錄 依 業 務 需 C001,, 002,130 交 通 管 科 (

(Microsoft Word - \244\361\301\311\263W\253h\244\316\255p\244\300\257\ \(1\))

???T????????

如何正確使用自己所擁有的正版音樂光碟?

Layout 1


玄奘大學 應用心理學系

《數學奠基活動模組示例》

Microsoft Word - LongCard_Promo_2013_FAQ_tc_pdf.doc

進 入 系 統 1. 請 於 首 頁 右 側 使 用 者 登 入 輸 入 帳 號 密 碼 驗 證 碼 後, 點 選 登 入 進 入 系 統 2. 直 接 點 選 右 側 的 進 入 系 統, 直 接 進 入 題 目 檢 索 頁 面 直 接 進 入 系 統 後, 您 仍 可 瀏 覽 選 擇 您 所 需

Acronis Backup & Recovery 11 進階版本

「技術員訓練計劃」小冊子 "Technician Training Scheme" pamphlet

268 別 行 政 區 所 以, 全 國 人 民 代 表 大 會 根 據 憲 法 第 31 條 規 定 設 立 了 特 別 行 政 區 沒 有 憲 法 第 31 條 的 規 定, 就 沒 有 特 別 行 政 區 制 度 存 在 的 合 法 性 基 礎 62 正 如 上 述, 憲 法 為 特 別 行

untitled

連江縣政府所屬學校兼任代課及代理教師聘任實施要點(草案)

<4D F736F F D D313032A7DEC075BAC2BC66B56EB04FB44EC5AAA7D3C440A7C7A874B2CEBEDEA740A4E2A5552E646F63>

節 數 內 容 網 頁 設 計 (1): 利 用 Google Sites 制 作 簡 單 文 字 網 頁, 連 結 不 同 版 面 網 頁 設 計 (2): 在 文 字 網 頁 上 加 插 圖, 上 載 網 頁 影 片 設 計 (1): 利 用 Windows Movie

Transcription:

電 腦 網 路 與 程 式 課 程 JAVA 物 件 導 向 程 式 設 計 JAVA 程 式 組 教 材 授 課 人 員 : 黃 怡 傑

目 錄 Ch1. 學 習 JAVA 的 第 一 堂 課 程 式 的 邏 輯 1.1 coding 的 習 慣 1.2 開 始 學 習 JAVA 前 的 準 備 1.3 第 一 個 JAVA 程 式 1.4 資 料 型 別 1.5 運 算 子 1.6 迴 圈 1.7 條 件 判 斷 1.8 使 用 者 輸 入 Ch2. 學 習 JAVA 的 第 二 堂 課 物 件 導 向 的 程 式 2.1 類 別 與 方 法 ( 一 ) 2.2 類 別 與 方 法 ( 一 ) 2.3 類 別 與 方 法 ( 一 ) 2.4 變 數 2.5 作 業 與 範 例 Ch3. 學 習 JAVA 的 第 三 堂 課 基 礎 的 網 路 程 式 3.1 基 礎 網 路 程 式 ( 一 ) 3.2 基 礎 網 路 程 式 ( 一 ) 2.3 作 業 與 範 例 1

Ch1. 學 習 JAVA 的 第 一 堂 課 程 式 的 邏 輯 1.1 coding 的 習 慣 寫 程 式 的 共 識 常 常 寫 程 式, 或 是 接 觸 程 式 碼 ( 或 是 各 種 語 言 的 編 碼 ) 的 人 很 容 易 能 了 解 那 種 : 看 到 一 整 篇 程 式 碼, 卻 沒 辦 法 馬 上 理 解 在 做 什 麼 甚 至 有 時 候 連 編 寫 的 人 自 己 都 有 閱 讀 問 題 的 情 況 一 個 好 的 程 式 ( 碼 ), 除 了 方 便 自 己 編 輯 使 用 外, 同 時 也 要 能 讓 別 人 容 易 看 懂 他 在 做 什 麼 以 下 列 舉 一 些 在 編 寫 JAVA( 或 是 各 種 程 式 語 言 ) 時 的 良 好 習 慣 1. 良 好 的 命 名 習 慣 : 上 自 資 料 夾, 下 至 小 小 的 變 數, 都 要 有 好 好 命 名 的 習 慣, 以 檔 名 或 是 資 料 夾 為 例 子 : 資 料 夾 由 外 到 裡 面 的 命 名 可 以 所 屬 單 位 所 屬 專 案 所 屬 程 式 等 等 命 名 檔 名 的 命 名 則 盡 量 遵 守 以 下 習 慣 : a. 以 英 文 命 名 - 這 除 了 方 便 整 理 等 等 功 能, 同 時 也 可 以 排 除 某 些 程 式 讀 取 上 的 錯 誤 b. 不 含 多 餘 符 號 - 以 java 的 變 數 為 例,JVM 本 身 只 允 許 "_"( 底 線 ) "$"( 錢 號 ), 兩 種 形 式, 通 常 除 非 需 求, 基 本 上 檔 名 的 命 名 盡 量 不 使 用 " 底 線 " 以 外 的 符 號, 底 線 使 用 的 時 機 在 於 連 結, 如 : ncu_me.java 這 類 的 命 名 形 式 c. 命 名 的 開 頭 為 英 文 - 不 要 以 數 字 或 是 符 號 當 作 名 稱 的 開 頭, 也 盡 量 避 免 單 純 流 水 號 形 式 的 命 名, 如 以 a1 a2 a3 命 名 2. 標 好 註 解 : 迴 圈 旗 標 判 斷 不 同 類 別 等 等 都 要 好 好 標 上 註 解 3. 括 號 的 習 慣 : 善 用 Tab 鍵 來 區 分 括 號 內 與 括 號 外 的 內 容, 即 使 可 以 省 略 括 號 的 部 份 也 盡 量 加 上 括 號, 此 外 每 打 完 一 段 程 式 碼 就 自 己 確 認 該 段 內 容, 確 認 括 號 的 完 整, 以 及 結 尾 記 號 ( 通 常 是 ";" 分 號 ) 是 否 有 加 上 2

1.2 開 始 學 習 java 前 的 準 備 開 始 寫 java 前 的 準 備 工 作 java 從 1995 年 正 式 公 開 以 後, 迄 今 已 經 出 到 第 六 版 (1.4 版 完 成 後 的 下 一 個 版 本 1.5 就 是 我 們 平 常 聽 到 的 第 五 版 本 ), 本 次 的 網 管 教 學 第 一 階 段 以 java 1.4 版 本 為 平 台 介 紹, 詳 細 的 版 本 差 異 度 可 自 行 從 網 站 上 尋 找, 這 裡 教 大 家 如 何 完 成 開 始 寫 java 前 的 準 備 工 作 Step 1: 1 首 先 先 至 http://java.sun.com/j2se/1.4.2/download.html 處 下 載 編 譯 java 語 言 用 的 檔 案 點 選 中 間 的 :Download J2SE SDK Required 的 部 份 勾 選 Accept 選 擇 Windows Offline Installation Step 2: 2 更 改 環 境 變 數 ( 環 境 變 數 的 設 定 位 置 : 我 的 電 腦 ( 右 鍵 ) \ 內 容 \ 進 階 \ 環 境 變 數 ) 在 系 統 變 數 的 地 方 找 出 Path 變 數, 選 擇 編 輯, 在 最 後 面 加 上 ;C:\j2sdk1.4.2_14\bin ( 不 含 引 號, 分 號 後 的 內 容 為 步 驟 一 安 裝 的 位 置 加 上 \bin) 在 系 統 變 數 的 地 方 新 增 一 個 名 為 "CLASSPATH"( 大 寫 ) 的 變 數 變 數 內 容 為 ". " ( 只 有 一 個 點 ) Step over: 完 成 以 上 的 設 定 後 就 可 以 搭 配 不 同 的 編 輯 器 做 基 本 的 java coding 練 習 下 次 上 課 會 使 用 JAVA 的 IDE ( 編 譯 器 ) eclipse 進 行 編 輯 屆 時 也 會 提 供 新 的 設 定 教 學 給 大 家 3

1.3 第 一 個 JAVA 程 式 就 像 所 有 程 式 範 例 或 是 課 程 的 第 一 個 程 式 一 樣,Hello~World~ java 語 言 的 舞 台,main 方 法 : 無 論 如 何 都 得 從 此 開 始! Main() 的 架 構 : public class HelloWorld { public static void main (String[] argv){ modifer modifer ReturnType identifer Argument identifer 在 程 式 之 中 只 能 有 一 個 public class ( 或 是 interface) 完 整 的 方 法 宣 告 : <modifer>_<return Type>_<identifer>_<Argument>{ main 方 法 的 架 構 為 固 定 架 構, 不 可 更 改 程 式 在 方 法 中 執 行 JAVA 線 上 API 查 詢 : http://java.sun.com/j2se/1.4.2/docs/api/ 練 習 : 請 寫 出 一 個 可 以 print 出 "Hello world" 字 串 的 java 程 式 提 示 : print 在 java 中 的 語 法 為 System.out.print(" ") ; 4

1.4 資 料 型 別 基 本 型 別 : 整 數 資 料 型 別 最 小 值 最 大 值 佔 用 空 間 byte -128 127 1 個 位 元 組 short -32768 32767 2 個 位 元 組 int -2147483648 2147483647 4 個 位 元 組 long -9223372036854775808 9223372036854775807 8 個 位 元 組 char 0 65535 2 個 位 元 組 注 意 char 代 表 的 是 Unicode characters, 例 如 輸 入 98 跑 出 來 的 結 果 會 是 'b', 此 外 也 要 注 意 進 位 問 題,16 進 位 的 表 示 方 法 為 0X00 也 就 是 在 數 字 前 面 加 上 " 0x " 8 進 位 的 表 示 方 法 為 000 也 就 是 在 數 字 前 面 加 上 0 因 此 當 java 中 出 現 int i = 077 這 樣 的 數 字 時, 代 表 的 是 8 進 位, 也 就 是 10 進 位 的 63 小 數 : 資 料 型 別 可 表 示 範 圍 佔 用 空 間 float +-3.4028237*10E38 ~ +-1.30239846*10-45 4 個 位 元 組 double +-1.76769313486231570*10 +308 ~ 4.94065645841246544*10-324 8 個 位 元 組 Boolean( 布 林 值 ) : true false 參 考 型 別 : String 字 串, 可 用 字 串 的 功 能 s.length() // 用 於 算 字 串 的 長 度 "\n" 換 行 "\t" 跳 格 ( 類 似 Tab 鍵 的 功 能 ) 變 數 的 宣 告 : 變 數 的 宣 告 基 本 上 是 以 下 兩 種 形 式 int i ; // 先 宣 告 變 數 名 稱, 之 後 再 應 用 int i = 100 ; or int i = j + k // 直 接 宣 告 變 數 的 內 容 變 數 的 命 名 需 要 遵 守 以 下 規 則 1. 變 數 的 命 名 開 頭 必 須 要 是 英 文 5

2. 變 數 只 能 含 有 " 英 文 字 母 " " 數 字 " "_" 底 線 "$" 錢 號 3. 變 數 不 可 以 使 用 保 留 字 (Reserved Word) Reserved Word 包 含 1. keyword 2. boolean 值 : true false 3. null 常 數 的 宣 告 : ex : final int i = 100 ; 在 宣 告 前 面 加 上 final, 之 後 就 不 能 在 修 改 1.5 運 算 子 運 算 式 : 與 一 般 程 式 語 言 沒 有 差 別, 需 要 注 意 的 是,java 有 所 謂 的 資 料 型 態, 因 此 彼 此 之 間 不 可 以 隨 便 轉 型 比 如,int 對 int 的 除 法, 若 沒 辦 法 整 除, 他 的 結 果 就 只 會 是 商 數, 而 如 果 要 得 到 餘 數, 則 需 要 使 用 % 來 得 到, 此 外, 在 計 算 時 的 計 算 順 序 為 等 號 右 邊 的 先 計 算, 計 算 完 成 後 再 放 回 左 邊 的 變 數 名 稱 例 如 : d = d + z ; 遞 增 與 遞 減 運 算 :(ex_2) var++ 在 本 次 變 數 使 用 完 後 遞 增 ++var 在 本 行 遞 增 var-- --var 條 件 運 算 子 (ex_4) 判 斷 式? opr1 : opr2 ; ex i = j%2 ==1? 100 : 0 ; 運 算 式 讀 取 順 序 : 由 左 到 右 (ex_3) ex : int k= i +++ j ; 複 合 運 算 子 i+=5 ; i=i+5 ; 6

迴 圈 : for 1.6 迴 圈 for ( 初 始 ; 條 件 ; 控 制 ) { // 迴 圈 條 件 滿 足 時 候 的 執 行 內 容 初 始 表 示 在 迴 圈 開 始 前 第 一 個 執 行 的 內 容, 只 會 執 行 一 次 條 件 為 判 斷 式, 回 傳 的 為 boolean 值 控 制 則 為 執 行 完 該 次 迴 圈 的 動 做 while while ( 條 件 ) { // 迴 圈 條 件 滿 足 時 候 的 執 行 內 容 注 意 while 的 作 法 是 : 先 check 迴 圈 " 條 件 " 的 內 容, 然 後 才 決 定 要 不 要 執 行 該 次 迴 圈, 與 下 面 的 do while 不 同 do..while do { 迴 圈 開 始 前 先 執 行 的 內 容 while ( 條 件 ) do..while 的 作 法 是 先 執 行 do{ 的 工 作, 然 後 在 判 斷 條 件, 若 條 件 符 合 則 繼 續 do 的 運 作 練 習 : 請 以 do while 完 成 九 九 乘 法 表 7

1.7 條 件 判 斷 條 件 分 支 : if if ( 條 件 ) { // 當 條 件 為 true 時 的 執 行 內 容 if..elseif..else.. if ( 條 件 1 ) { // 當 條 件 1 為 true 時 的 執 行 內 容 else if ( 條 件 3){ // 當 條 件 2 為 true 時 的 執 行 內 容 else if ( 條 件 2){ // 當 條 件 2 為 true 時 的 執 行 內 容 else{ // 當 以 上 條 件 皆 不 符 合 時 執 行 內 容 switch switch ( 條 件 式 ) { case 1 : // case 1 成 立 時 要 執 行 的 內 容 break ; case 2 : // case 2 成 立 時 要 執 行 的 內 容 break ; case 3 : // case 3 成 立 時 要 執 行 的 內 容 break ; default : case 後 面 的 內 容 可 以 為 char short byte int, 若 沒 有 break, 則 會 連 下 一 個 程 式 一 起 執 行 不 一 定 要 有 default, 若 有 default 則 不 需 要 break 8

練 習 : 判 斷 選 擇 何 種 幾 何 形 狀, 而 後 要 求 數 值 計 算 面 積 要 求 以 下 執 行 功 能 : 請 選 擇 幾 何 形 狀 :1. 直 角 三 角 形 2. 矩 形 3. 梯 形 ( 使 用 者 以 數 字 選 擇 ) 請 輸 入 邊 長 ( 或 者 要 求 輸 入 底. 高. 寬. 等 等 ) 本 幾 何 圖 形 之 面 積 為 : ( 另 外 選 擇 各 種 形 狀, 若 輸 入 數 值 不 符 合 該 形 狀 時 要 回 報 錯 誤 ) 1.8 使 用 者 輸 入 本 次 上 課 中 有 許 多 範 例 皆 有 提 供 使 用 者 輸 入, 在 此 簡 介 使 用 者 輸 入 並 將 其 轉 為 int 的 方 法 使 用 者 輸 入 : 基 本 型 別 import java.io.*; // 在 public class 前 面 先 打 上 這 行 public class area { public static void main (String[] argv) throws IOException{ // 在 main 方 法 的 括 號 前 打 上 這 段 (throws IOException) // 表 示 繼 承 IOException 類 別 的 功 能 // 可 以 在 讓 使 用 者 輸 入 前 先 打 上 希 望 他 們 接 收 的 資 訊 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 加 上 上 面 這 行 String str = br.readline(); // 這 行 的 用 處 是 讀 取 使 用 者 剛 輸 入 的 字 串 int name = Integer.parseInt(str); // 這 行 的 用 處 是 將 使 用 者 剛 輸 入 的 字 串 轉 為 int // 進 行 其 他 codeing str = br.readline(); // 可 以 不 只 一 次 的 要 求 輸 入 int name2 = Integer.parseInt(str); // 其 他 code 9

Ch2. 學 習 JAVA 的 第 二 堂 課 物 件 導 向 的 程 式 2.1 類 別 與 方 法 ( 一 ) 宣 告 類 別 : ( 下 面 的 範 例 皆 以 施 威 銘 研 究 室 JAVA2 程 式 語 言 中 之 範 例 用 來 介 紹, 內 文 則 為 自 撰 文 章 ) class 類 別 名 稱 { // 描 述 類 別 的 內 容 類 別 的 宣 告 基 本 上 如 上 所 示, 而 在 class 前 面 也 可 以 加 上 一 些 modifier 例 如 之 前 提 過 的 public 等 等, 用 來 設 定 他 的 存 取 等 級 之 類 的 特 性 以 本 次 作 業 之 部 份 為 例 子 如 下 class bird { // 鳥 的 類 別 int x, y; // 設 定 鳥 類 別 的 特 性 // 這 裡 是 設 定 鳥 的 座 標 為 (x,y) public class Shoot1 { static public void main(string[] argv) { //main() 方 法 上 面 可 以 看 出, 一 個 java 程 式 裡 面 不 限 定 只 有 一 個 類 別, 同 時 可 以 有 很 多 個 類 別 存 在, 但 是 public class 只 能 有 一 個 宣 告 方 法 : 方 法 可 以 說 是 類 別 的 行 為, 像 是... 武 器 的 類 別 就 可 以 擁 有 攻 擊 之 類 的 方 法, 而 由 類 別 產 生 出 來 的 物 件 也 都 可 以 使 用 同 樣 的 方 法 通 常 在 討 論 方 法 時 都 會 在 方 法 名 稱 後 面 加 上 ( ) 小 括 號 來 避 免 混 淆 回 傳 值 型 別 方 法 名 稱 ( 參 數 ) { // 描 述 方 法 的 內 容 上 述 即 為 方 法 的 宣 告 格 式, 其 中 : 1. 回 傳 值 型 別 如 果 標 上 void 就 表 示 這 個 方 法 不 會 有 運 算 結 果 2. 方 法 名 稱 可 自 行 定 義, 注 意 若 和 類 別 名 稱 相 同 則 稱 為 建 構 方 法 10

3. 參 數 方 法 輸 入 的 時 候 可 以 設 定 參 數, 則 在 使 用 方 法 的 時 後 於 括 弧 中 加 入 參 數 即 可, 例 如 : 計 算 面 積 ( 長, 寬 ) 同 樣 以 本 次 作 業 之 部 份 為 例 子 如 下 class bird { // 鳥 的 類 別 int x, y; // 設 定 鳥 類 別 的 特 性 // 這 裡 是 設 定 鳥 的 座 標 為 (x,y) void exploding(){ // 加 上 告 知 鳥 被 摧 毀 的 方 法 System.out.println(" 在 ("+x+","+y+") 座 標 的 鳥 被 摧 毀 ") public class Shoot1 { static public void main(string[] argv) { //main() 方 法 上 面 可 以 看 出, 一 個 java 程 式 裡 面 不 限 定 只 有 一 個 類 別, 同 時 可 以 有 很 多 個 類 別 存 在, 但 是 public class 只 能 有 一 個 類 別 的 使 用 : 以 本 次 作 業 為 例, 目 標 物 (target) 類 別 已 經 設 定 好 了, 接 下 來 試 著 在 main 方 法 產 生 一 個 目 標 物 之 物 件 以 類 別 產 生 物 件 的 格 式 如 下 類 別 名 稱 物 件 名 稱 = new 類 別 ( ) ; 而 要 為 類 別 產 生 出 來 的 物 件 設 定 參 數 或 是 使 用 其 方 法 連 結 的 方 式 為 ". " ( 點 ), 例 如 : class bird { // 設 置 鳥 的 類 別 int x, y; // 設 定 鳥 類 別 的 特 性 // 這 裡 是 設 定 鳥 的 座 標 為 (x,y) void exploding(){ // 告 知 被 炸 的 方 法 System.out.println(" 在 ("+x+","+y+") 座 標 的 鳥 被 炸 了 ") 11

public class Shoot1 { static public void main(string[] argv) { bird i = new bird (); // 宣 告 產 生 一 個 名 為 i 的 bird( 鳥 ) i.x = 2 ; // 使 用 物 件 ( 設 定 x 座 標 ) i.y = 3 ; // 使 用 物 件 ( 設 定 y 座 標 ) i.exploding() ; // 使 用 物 件 的 方 法 ( 摧 毀 ) 以 上 僅 示 範 產 生 一 個 物 件, 實 際 上 設 定 好 類 別 後 可 以 產 生 多 個 物 件, 例 如 用 同 樣 的 方 法 設 定 多 個 目 標 物, 再 加 上 條 件 即 可, 而 各 物 件 之 間 的 參 數 等 等 皆 不 互 相 抵 觸 同 樣 的 也 可 以 以 陣 列 來 指 向 多 個 物 件 範 例 : 以 下 為 本 次 作 業 極 度 簡 化 版 本 的 範 例, 讓 大 家 從 中 了 解 整 個 物 件 導 向 的 運 作 import java.io.*; class bird { // 鳥 int x,y; // 鳥 位 置 void exploding() { System.out.println(" 在 (" + x + "," + y +") 的 鳥 被 摧 毀 " ); class bullet { // 子 彈 int x,y; // 子 彈 位 置 int stepx,stepy; // 子 彈 移 動 速 度 ( 向 量 ) void move() { // 依 移 動 速 度 到 下 一 位 置 x += stepx; y += stepy; System.out.println(" 子 彈 移 到 (" + x + "," + y + ")"); class hunter { // 獵 人 int x,y; // 獵 人 位 置 12

bullet fire(int stepx,int stepy) { // 產 生 一 顆 子 彈 bullet c = new bullet(); c.stepx = stepx; c.stepy = stepy; c.x = x; c.y = y; return c; class Battlefield { // 戰 場 int width,height; // 戰 場 大 小 bird i; // 在 戰 場 中 放 上 鳥 i hunter f; // 在 戰 場 中 放 上 獵 人 f bullet c; // 在 戰 場 中 放 上 子 彈 c boolean hitbird(bullet c) { // 是 否 擊 中 鳥 if((c.x == i.x) && (c.y == i.y)) { // 若 擊 中 i.exploding(); // 鳥 爆 炸 i = null; // 清 除 鳥 i return true; // 傳 回 擊 中 了 return false; // 否 則 傳 回 沒 有 擊 中 boolean outoffield(bullet c) { if(c.x < 0 c.y < 0) // 超 過 左 邊 界 或 上 邊 界 return true; if(c.x >= width c.y >= height) // 超 過 右 邊 界 或 下 邊 界 return true; return false; public class Shooting { public static void main(string[] argv) throws IOException{ Battlefield b = new Battlefield(); // 產 生 戰 場 b.width = 5; // 設 為 5X5 的 大 小 b.height = 5; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 用 來 讀 取 輸 入 資 料 13

// 產 生 鳥 b.i = new bird(); // 取 得 使 用 者 輸 入 的 鳥 位 置 System.out.println(" 請 輸 入 鳥 的 位 置 :"); System.out.print("x->"); b.i.x = java.lang.integer.parseint(br.readline()); System.out.print("y->"); b.i.y = java.lang.integer.parseint(br.readline()); // 產 生 獵 人 b.f = new hunter(); // 取 得 使 用 者 輸 入 的 獵 人 位 置 System.out.println(" 請 輸 入 獵 人 的 位 置 :"); System.out.print("x->"); b.f.x = java.lang.integer.parseint(br.readline()); System.out.print("y->"); b.f.y = java.lang.integer.parseint(br.readline()); // 取 得 使 用 者 輸 入 的 子 彈 移 動 速 度 System.out.println(" 請 輸 入 子 彈 的 移 動 速 度 :"); System.out.print("x->"); int x = java.lang.integer.parseint(br.readline()); System.out.print("y->"); int y = java.lang.integer.parseint(br.readline()); // 發 射 子 彈 b.c = b.f.fire(x,y); do { // 移 動 子 彈, 並 測 試 是 否 越 過 邊 界 b.c.move(); if(b.outoffield(b.c) b.hitbird(b.c)) b.c = null; // 清 除 子 彈 while (b.c!= null); System.out.println(" 遊 戲 結 束!"); 14

2.2 類 別 與 方 法 ( 二 ) 變 數 的 有 效 範 圍 : --> 區 域 變 數 宣 告 在 區 域 內 的 變 數, 僅 能 在 該 區 域 內 生 效, 而 注 意 內 層 的 不 能 與 外 層 重 複 宣 告 以 下 為 例 public class Scope { public static void main(string[] argv){ int x = 3; { int y = 8; { int z = 10; System.out.println("x = " + x); // 最 外 層 的 x System.out.println("y = " + y); // 上 一 層 的 y System.out.println("z = " + z); System.out.println(""); int z = 8; System.out.println("x = " + x); // 最 外 層 的 x System.out.println("y = " + y); System.out.println("z = " + z); System.out.println(""); int y = 3; int z = 3; System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("z = " + z); --> 成 員 變 數 類 別 中 的 成 員 也 有 變 數, 一 旦 類 別 產 生 出 物 件 後, 該 物 件 即 具 有 其 成 員 變 數, 而 方 法 可 以 使 用 其 所 屬 類 別 的 成 員 變 數 ( 即 使 該 變 數 較 晚 宣 告 ) 但 是 若 方 法 中 也 以 同 樣 名 稱 宣 告 變 數 的 話, 則 會 造 成 名 稱 遮 蔽 防 止 被 遮 蔽 的 方 法 可 以 使 用 this. 變 數 名 稱 15

ex : class Test { int x = 10; int y = 10; void show(int x){ // 遮 蔽 成 員 x int y = 20; // 遮 蔽 成 員 y System.out.println("x = " + x); System.out.println("y = " + y); public class Shadowing { public static void main(string[] argv){ Test a = new Test(); a.show(20); 如 此 跑 出 來 的 結 果 即 為 x = 20 y=20, 若 使 用 this. 如 下 class Test { int x = 10; int y = 10; void show(int x){ // 遮 蔽 成 員 x int y = 20; // 遮 蔽 成 員 y System.out.println("x = " + this.x); System.out.println("y = " + this.y); public class UsingThis { public static void main(string[] argv){ Test a = new Test(); a.show(20); 則 跑 出 來 的 結 果 即 為 x = 10 y=10, 若 使 用 this. 如 下 --> for 迴 圈 中 的 變 數 如 果 在 for 迴 圈 外 就 已 經 設 置 變 數 名 稱, 則 for 結 束 後 亦 可 使 用 其 結 果 但 若 是 在 for( ) 括 弧 內 的 初 始 值 才 宣 告, 那 麼 當 迴 圈 結 束 後 再 使 用 就 會 發 生 錯 誤 ( 見 範 例 檔 案 ex_forright ex_forerror) 16

2.3 類 別 與 方 法 ( 三 ) 方 法 的 多 重 定 義 : --> 以 System.out.println 為 例 之 前 上 課 常 常 使 用 到 的 System.out.print( ), 括 弧 內 的 參 數 不 只 可 以 使 用 一 種, 可 以 是 字 串 也 可 以 是 整 數, 這 種 方 法 擁 有 多 重 定 義 (overloading) 的 功 能, 但 若 自 自 己 設 立 的 方 法 也 需 要 有 多 重 定 義 該 怎 麼 辦 呢? 方 法 如 下 同 名 方 法 --> 即 以 同 樣 的 名 稱, 不 同 的 參 數 內 容 定 義 方 法, 以 下 為 例 class Test { // 1 號 版 本 : 使 用 寬 與 高 int rectanglearea ( int width, int height) { return width * height; // 2 號 版 本 : 使 用 座 標 int rectanglearea ( int top, int left, int bottom, int right) { return (right - left + 1) * (bottom - top + 1); public class Overloading { public static void main(string[] argv){ Test a = new Test(); int area; area = a.rectanglearea(10,20); System.out.println(" 矩 形 面 積 :" + area); area = a.rectanglearea(1,1,10,20); System.out.println(" 矩 形 面 積 :" + area); 要 注 意 的 是, 多 重 定 義 方 法 時, 不 同 版 本 的 同 名 方 法 參 數 要 不 同, 至 少 要 有 一 個 參 數, 無 論 是 型 別 個 數 之 中 要 不 一 樣, 才 能 讓 程 式 判 斷 建 構 方 法 (Constructor): 前 面 提 到 在 類 別 中 方 法 與 類 別 同 名 會 被 視 為 建 構 方 法, 建 構 方 法 即 是 在 類 別 產 生 物 件 後 自 動 被 呼 叫, 建 構 物 件 的 初 始 狀 態 將 前 面 的 作 業 範 例 加 入 建 構 子 即 變 成 如 下, 範 例 為 幫 bullet 類 別 加 上 建 構 子, 另 外 在 讓 其 可 以 自 動 判 斷 是 否 擊 中 目 標 17

class Bullet { // 子 彈 int x,y; // 子 彈 位 置 int stepx,stepy; // 子 彈 移 動 速 度 及 方 向 Battlefield b; // 戰 場 Bullet(int x,int y,int stepx,int stepy,battlefield b) { this.x = x; this.y = y; this.stepx = stepx; this.stepy = stepy; this.b = b; Bullet move() { // 依 據 移 動 速 度 換 到 下 一 位 置 x += stepx; y += stepy; System.out.println(" 子 彈 移 到 (" + x + "," + y + ")"); return (b.outoffield(this) b.hitbird(this))? null : this; // 判 斷 是 否 擊 中 或 是 超 出 戰 場 // 剩 餘 部 份 見 附 檔 Shooting2 2.4 變 數 變 數 宣 告 的 方 法 : --> 使 用 java.io 套 件 --> 變 數 實 際 上 是 用 特 定 演 算 法 產 生 出 不 規 則 的 數 字, 並 非 真 正 的 亂 數 --> Math.random() 產 生 出 來 的 為 一 個 介 於 0 與 1 之 間 ( >=0, < 1 ) 的 浮 點 數 因 此 若 要 產 生 整 數 亂 數 則 需 要 在 前 面 加 上 int, 並 在 後 面 乘 上 範 圍 以 下 為 例 import java.io.*; // 使 用 java.io 套 件 下 的 類 別 public class randtest { public static void main(string[] argv) throws IOException{ // 繼 承 IOException int a =(int)(math.random()*4) ; // 限 定 範 圍 為 0~3, 並 且 將 浮 點 數 型 別 轉 成 int 型 別 System.out.println(a); 18

2.5 作 業 與 範 例 本 次 作 業 自 己 打 自 己 的 無 聊 小 遊 戲 ( 請 應 用 類 別 方 法 建 構 方 法 等 等 內 容 來 寫 ) 要 求 : 1. 可 以 亂 數 設 定 目 標 ( 鳥 ) 座 標 ( 整 數 座 標 )( 範 圍 : x=0~10 y=0~10) 2. 戰 場 座 標 x=0~10 y=0~10 3. 設 定 自 己 的 座 標 4. 設 定 發 射 子 彈 的 角 度 ( 用 向 量 ) 5. 設 定 子 彈 彈 若 擊 中 小 鳥 則 回 傳 擊 中 目 標 的 訊 息, 若 沒 有 擊 中 小 鳥 則 讓 使 用 者 繼 續 發 射 子 彈 或 是 更 改 自 己 的 位 置 後 發 射 子 彈 若 移 動 自 己 位 置 到 小 鳥 所 在 位 置 則 回 傳 自 爆 訊 息 6. 程 式 內 容 要 判 斷 子 彈 已 經 超 過 目 標 物 範 圍 19

Ch3. 學 習 JAVA 的 第 三 堂 課 基 礎 的 網 路 程 式 3.1 基 礎 網 路 程 式 ( 一 ) server+client 基 礎 的 網 路 程 式 : 網 路 程 式 單 是 就 運 作 方 式 等 等 來 劃 分 就 可 以 分 為 許 多 種 類, 在 本 次 網 管 上 課 只 跟 大 家 介 紹 最 簡 單 的 一 種 --> 分 別 設 立 Server 端 以 及 Client 端 來 進 行 連 結 第 一 個 範 例 的 基 本 訴 求 如 下 : Server 端 : 由 指 令 參 數 輸 入 執 行 埠 (port), 以 執 行 埠 建 立 伺 服 器 平 台, 等 待 Client 端 連 結, 並 且 讀 取 其 網 址 (ip) Clent 端 : 由 指 令 參 數 輸 入 server 之 網 址 (IP) 及 執 行 埠 (port), 以 server 之 網 址 (IP) 及 執 行 埠 (port) 建 立 網 路 串 流 連 接 平 台 連 結 server 端 Java 系 統 本 身 內 建 有 網 路 伺 服 平 台 的 class --> ServerSocket, 使 用 此 類 別 就 可 以 簡 單 的 設 定 出 一 個 網 路 伺 服 器 驅 動 的 語 法 如 下 : SS = new ServerSocket(port); //SS 為 伺 服 網 站 的 名 稱 ( 自 訂 ) //port 為 設 定 的 連 接 埠 (int 自 訂 ) 設 定 完 成 後 便 可 以 設 定 網 路 連 接 平 台, 語 法 如 下 : socket = SS.accept(); //socket 為 網 路 連 接 平 台 的 名 稱 ( 自 訂 ) //SS 為 伺 服 網 站 的 名 稱 ( 自 訂 ) 20

完 成 上 述 設 定 後,Server 端 的 程 式 大 致 上 就 算 設 定 完 成 了, 記 得 在 與 Client 端 的 連 接 結 束 後 使 用 socket.close() 方 法 來 關 閉 網 路 平 台 而 Client 不 需 要 建 立 伺 服 網 站, 因 此 在 程 式 中 建 立 與 Server 端 連 結 的 網 路 平 台 即 可, 程 式 碼 如 下 : socket=new Socket(InetAddress.getByName(servername),port); // 以 前 面 取 得 的 servername 以 及 port 建 立 連 線 完 成 上 述 設 定 後,Client 端 便 已 經 與 server 端 建 立 連 線 了, 同 樣 在 與 Server 端 的 連 接 結 束 後 使 用 socket.close() 方 法 來 關 閉 網 路 平 台 上 面 要 注 意 的 是, 大 部 分 的 語 法 都 是 使 用 java 內 建 的 語 法, java 本 身 其 實 尚 有 許 多 套 件 可 以 應 用 在 各 方 面, 請 自 行 鑽 研 範 例 程 式 : Server 端 程 式 ( 見 範 例 檔 案 ServerEx_1.java) import java.net.*; import java.io.*; // 加 入 JAVA 內 建 網 路 套 件 // 加 入 java 內 建 IO 套 件 public class ServerEx_1 { ServerSocket SS; // 在 public class 下 的 變 數 1 : SS( 伺 服 器 網 站 名 稱 ) Socket socket; // 同 上,socket( 網 路 平 台 的 名 稱 ) static int port; // 用 來 設 定 自 己 port 用 的 變 數 public ServerEx_1() { try{ // 注 意 這 是 建 構 子 //try...catch 語 法 是 為 了 捕 捉 exception SS = new ServerSocket(port); System.out.println("Server created."); // 以 port 產 生 一 個 伺 服 器 // 告 知 已 經 產 生 好 了 System.out.println("waiting for client to connect..."); // 告 知 可 以 給 人 家 連 接 了 21

socket = SS.accept(); // 設 定 網 路 平 台 可 以 開 始 接 收 System.out.println(" 已 經 和 " + 位 址 +" 連 接 "); // 這 裡 是 設 定 告 訴 自 己 對 方 的 名 稱 socket.close(); // 停 止 接 收 catch(ioexception){ //try...catch 語 法 是 為 了 捕 捉 exception System.out.println(e.toString()); e.printstacktrace(); System.exit(1); // 如 果 發 生 exception 錯 誤 直 接 結 束 public static void main(string args[]){ if(args.length < 1){ // 首 先 先 判 斷 指 令 參 數 輸 入 是 否 正 確 System.out.println(" 請 用 : java ServerEx_1 [port] 這 樣 的 格 式 執 行 "); System.exit(1); // 如 果 輸 入 格 式 錯 誤 直 接 結 束 port=integer.parseint(args[0]); // 讀 取 指 令 參 數 的 值 當 成 port ServerEx_1 ServerStart=new ServerEx_1(); // 以 類 別 產 生 出 一 個 網 路 平 台 物 件 Client 端 程 式 ( 見 範 例 檔 案 ClientEx_1.java) import java.io.*; import java.net.*; public class ClientEx_1 { Socket socket; // 設 定 變 數 ( 自 己 的 網 路 平 台 名 稱 ) static String servername; // 設 定 變 數 ( 欲 連 接 的 網 路 平 台 名 稱 ) static int port; // 設 定 port public ClientEx_1() { // 注 意 這 是 建 構 子 try{ socket=new Socket(InetAddress.getByName(servername),port); // 以 前 面 取 得 的 servername 以 及 port 建 立 連 線 22

socket.close(); catch(ioexception e){ System.out.println("IOException when connecting Server!"); public static void main(string args[]) { if (args.length < 2){ System.out.println("USAGE: java Client09 [servername] [port]"); System.exit(1); servername= args[0]; port=integer.parseint(args[1]); ClientEx_1 ClientStart=new ClientEx_1(); 3.2 基 礎 網 路 程 式 ( 二 ) server+client 訊 息 傳 遞 簡 單 的 訊 息 傳 遞 : 前 面 介 紹 了 建 立 網 路 伺 服 器 以 及 網 路 連 線 平 台 的 方 法, 建 立 好 網 路 連 線 平 台 後, 便 可 以 以 網 路 串 流 的 類 別 來 進 行 串 流 物 件 的 傳 送, 這 部 份 server 和 client 的 語 法 是 一 樣 的, 只 需 就 已 有 的 類 別 新 增 出 物 件, 再 使 用 即 可 輸 入 ( 或 者 說 接 收 串 流 ) 的 語 法 如 下 : instream = new DataInputStream(socket.getInputStream()); // 首 先 以 DataInputStream 類 別 新 增 一 個 物 件, 名 為 instream // 此 物 件 的 內 容 是 socket 這 個 連 線 平 台 接 收 到 的 串 流 // 讀 取 某 連 線 平 台 接 收 到 之 串 流 的 方 法 為 getinputstream() messagein = instream.readutf(); // 將 instream 讀 到 的 串 流 存 入 messagein 這 個 變 數 中 // ( 變 數 名 稱 自 訂, 但 是 要 注 意 變 數 的 資 料 型 別 ) 23

輸 出 ( 或 者 說 傳 送 串 流 ) 的 語 法 如 下 : outstream = new DataOutputStream(socket.getOutputStream()); // 首 先 以 DataOutputStream 類 別 新 增 一 個 物 件, 名 為 outstream // 此 物 件 的 內 容 是 socket 這 個 連 線 平 台 要 傳 送 的 串 流 outstream.writeutf() = messageout; // messageout 變 數 的 內 容 放 入 out 串 流 並 傳 送 範 例 程 式 : Server 端 程 式 ( 見 範 例 檔 案 ServerEx_2.java) import java.net.*; import java.io.*; import java.util.*; public class ServerEx_2 { ServerSocket SS; DataOutputStream outstream; DataInputStream instream; Socket socket; static int port; static String messageout; static String messagein; Date currentdate; public ServerEx_2() { try{ SS = new ServerSocket(port); currentdate = new Date(); System.out.println("Server created."); System.out.println("waiting for client to connect..."); 24

while(true){ socket = SS.accept(); System.out.println(" 現 在 與 " +socket.getinetaddress().gethostaddress()+" 連 線 "); System.out.println(" 對 方 的 網 路 名 稱 為 :" +socket.getinetaddress().gethostname()); System.out.println(" 連 線 時 間 是 :" + currentdate); instream = new DataInputStream(socket.getInputStream()); messagein = instream.readutf(); System.out.println(" 對 方 傳 送 訊 息 : " + messagein); System.out.println("waiting..."); instream = new DataInputStream(socket.getInputStream()); messagein = instream.readutf(); System.out.println("message: " + messagein); outstream = new DataOutputStream(socket.getOutputStream()); outstream.writeutf(messageout); outstream.close(); catch(ioexception e){ System.out.println(e.toString()); e.printstacktrace(); System.exit(1); public static void main(string args[]){ if(args.length < 2){ System.out.println("Usage: java Server11 [port] [messageout]"); 25

System.exit(1); port=integer.parseint(args[0]); messageout = args[1]; ServerEx_2 ServerStart=new ServerEx_2(); Client 端 程 式 ( 見 範 例 檔 案 ClientEx_1.java) import java.io.*; import java.net.*; public class ClientEx_2 { Socket socket; DataOutputStream outstream; DataInputStream instream; String messagein; static String messageout; static String servername; static int port; public ClientEx_2() { try{ socket=new Socket(InetAddress.getByName(servername),port); outstream = new DataOutputStream(socket.getOutputStream()); outstream.writeutf(messageout); instream=new DataInputStream(socket.getInputStream()); messagein = instream.readutf(); System.out.println(" 對 方 傳 送 的 訊 息 為 : " + messagein); socket.close(); catch(ioexception e){ 26

System.out.println("IOException when connecting Server!"); public static void main(string args[]) { if (args.length < 3){ System.out.println("USAGE: java ClientEx_2 [servername] [port] [messageout]"); System.exit(1); servername= args[0]; port=integer.parseint(args[1]); messageout = args[2]; ClientEx_2 ClientStart=new ClientEx_2(); 3.3 作 業 與 範 例 本 次 作 業 5/4 對 打 的 無 聊 小 遊 戲 ( 上 次 作 業 加 上 網 路 功 能 ) ( 請 應 用 類 別 方 法 建 構 方 法 以 及 網 路 等 等 內 容 來 寫 ) ( 作 業 不 要 求 必 須 使 用 上 課 所 學, 但 限 定 使 用 java 編 寫 ) 本 次 要 求 : 1. 本 次 作 業 需 上 傳 2 個 ( 含 ) 以 上 的 檔 案, 程 式 內 容 分 別 要 有 server 與 client 端 的 遊 戲 程 式 ( 若 寫 出 功 能 更 強 大 的 可 以 加 分!!) ( 若 可 以 不 用 區 分 server 與 client 端 程 式, 則 不 受 以 下 2~5 限 制 ) 2. 所 撰 寫 的 client 端 程 式 要 可 以 連 線 到 對 方 程 式, 並 且 進 行 遊 戲 3. 遊 戲 方 式 為, 兩 人 設 定 好 自 己 的 座 標 以 後, 將 自 己 的 座 標 傳 送 給 對 方 並 開 始 遊 戲, 先 擊 敗 對 手 的 勝 利 4. 本 次 作 業 分 數 視 實 際 撰 寫 出 遊 戲 功 能 之 " 效 能 " " 功 能 " 而 評 分 5. 參 考 檔 案 : 亂 槍 打 鳥 online 基 本 要 求 : 1. 可 以 亂 數 設 定 目 標 ( 鳥 ) 座 標 ( 整 數 座 標 )( 範 圍 : x=0~10 y=0~10) 2. 戰 場 座 標 x=0~5 y=0~5 3. 設 定 自 己 的 座 標 4. 設 定 發 射 子 彈 的 角 度 ( 用 向 量 ) 5. 設 定 子 彈 彈 若 擊 中 小 鳥 則 回 傳 擊 中 目 標 的 訊 息 若 沒 有 擊 中 小 鳥 則 讓 使 用 者 繼 續 發 射 子 彈 或 是 更 改 自 己 的 位 置 後 發 射 子 彈 若 移 動 自 己 位 置 到 小 鳥 所 在 位 置 則 回 傳 自 爆 訊 息 6. 程 式 內 容 要 判 斷 子 彈 已 經 超 過 目 標 物 範 圍 27