技術文章
技術問答
My Project
iT 徵才
聊天室
2026 鐵人賽
登入/註冊
文章
問答
Tag
邦友
鐵人賽
搜尋
2026 iThome 鐵人賽
DAY
18
0
Software Development
從零開始學程式語言:Java 新手修煉記
系列 第
18
篇
Day 18: 類別(6)
18th鐵人賽
ling__
2026-10-02 18:15:43
77 瀏覽
分享至
題目練習:
試設計一個類別,內含 a、b 兩種資料成員,型別為 int,請完成下列各函數的程式設計:
class CCalculator{int a,b;}
(a) 定義 set_volue() 函數,用來設定資料成員 a、b 的值
void set_volue(int x, y){a = x; b = y;}
(b) 定義 show() 函數,可用來列印所有成員資料的值
void show(){System.out.println("a = " + a); System.out.println("b = " + b);}
(c) 定義 add() 函數,可用來傳回 a、b 的和
int add(){return a + b;}
(d) 定義 sub() 函數,可用來傳回 a、b 的差
int sub(){return a - b;}
(e) 定義 mul() 函數,可用來傳回 a、b 的乘積
int mul(){return a * b;}
(f) 定義 avg() 函數,可用來傳回 a、b 的平均值,傳回值型別為 double
double avg(){return (a + b)/2.0;}
設有一 CData 類別,可以用來記錄好友姓名、電子郵件及生日,定義如下:
class CData{
private String name;
private String email;
private int mm;
private int dd;
private int yy;
}
(a) 試在 CData 類別裡加入 setName() 函數,可用來設定好友姓名(字串)
void setName(String name){this.name = name;}
(b) 試在 CData 類別裡加入 setEmail() 函數,可用來設定電子郵件信箱(字串)
void setEmail(String email){this email = email;}
(c) 試在 CData 類別裡加入 setBirthday(int m, int y, int d) 函數,可用來設定生日的年份、月分與日期
int setBirthday(int m, int y, int d){mm = m; yy = y; dd = d;
return = o;
}
因為下議題要檢查是否合理
(d) 試在 CData 類別裡加入 private boolean checkDate(int m, int d, int y) 函數,用來判定生日的年、月、日是否在合法的範圍,其中 y 的值要在西元 1900~2099 之間,且不考慮閏年問題
private boolean checkDate(int m, int d, int y){
if (y < 1900 || y > 2099)
return false;
if (m < 1 || m > 12)
return false;
if (d < 1 || d > 31)
return false;
return true;
}
(e) 試在 CData 類別裡加入 setAll() 函數,使得在 main() 裡可以設定所有資料成員
void setAll(String name, String email, int m, int d, int y) {
this.name = name;
this.email = email;
mm = m;
dd = d;
yy = y;
}
(f) 試在 CData 類別裡加入 showData() 函數,用來印出好友的所有資料。生日的輸出格式為 mm/dd//yy
void showData() {
System.out.println("姓名:" + name);
System.out.println("Email:" + email);
System.out.println("生日:" + mm + "/" + dd + "/" + yy);
}
(g) 試在 setBirthday() 函數中加入 checkDate() 函數,使得若是日期格式設定錯誤時,showData() 函數不會將日期印出,而是印出「日期格式錯誤!」,但姓名、email 如正確可正常
void setBirthday(int m, int y, int d) {
if (checkDate(m, d, y)) {
mm = m;
yy = y;
dd = d;
dateCorrect = true;
}
else {
dateCorrect = false;
}
}
且 showData() 要修改:
void showData() {
System.out.println("姓名:" + name);
System.out.println("Email:" + email);
if (dateCorrect)
System.out.println("生日:" + mm + "/" + dd + "/" + yy);
else
System.out.println("日期格式錯誤!");
}
(h) 請設立 CData 類別的物件 tom,利用 (a)~(c) 定義的函數為 tom 的資料成員設值,在利用 showData() 印出
public class Main {
public static void main(String[] args) {
CData tom = new CData();
tom.setName("Tom");
tom.setEmail("
tom@gmail.com
");
tom.setBirthday(10, 2005, 22);
tom.showData();
}
}
(i) 試在 CData 類別的物件 mary,利用 (e) 定義的函數為 mary 的成員資料設值,再利用 showData() 印出
public class Main {
public static void main(String[] args) {
CData mary = new CData();
mary.setAll("Mary", "
mary@gmail.com
", 5, 20, 2004);
mary.showData();
}
}
留言
追蹤
檢舉
上一篇
Day 17:類別(5)
下一篇
Day 19:類別(7)
系列文
從零開始學程式語言:Java 新手修煉記
共
22
篇
目錄
RSS系列文
訂閱系列文
0
人訂閱
18
Day 18: 類別(6)
19
Day 19:類別(7)
20
Day 20:類別(8)
21
Day 21:類別(9)
22
Day 22:類別(10)
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
929
組
團體組數
32
組
累計文章數
17852
篇
完賽人數
247
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
17th鐵人賽
14th鐵人賽
12th鐵人賽
18th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
熱門問題
讓 AI Agent 唯讀連 PostgreSQL:BEGIN READ ONLY 擋不住 COPY TO PROGRAM,防線該設在交易還是角色?
新的IR ? 適合嗎 Dynamic Incident Response: A Framework for Security Teams
停用網路卡隨機mac 的方式 (Random MAC Addresses for Ethernet Adapters)
我的出發點錯了嗎
excel 檔案損毀的情況
熱門回答
讓 AI Agent 唯讀連 PostgreSQL:BEGIN READ ONLY 擋不住 COPY TO PROGRAM,防線該設在交易還是角色?
我的出發點錯了嗎
熱門文章
# 第一次安裝 Codex 就上手:Windows 新手下載與設定教學
Claude Code 支援第三方推理端點:從零開始的完整設定與四項驗證
企業寄信為什麼需要 SMTP Relay?帳戶分流、IP 分流一次了解
Day 7|讓新增按鈕動起來:實作POST /api/todos
在Arduino UNO Q開發板上,使用Needle將文字輸入轉化為動作
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}