0% found this document useful (0 votes)
2 views47 pages

Java Class 7

本文件介绍了Java基础语法,重点讲解了String类的构造、比较及常用方法,强调String的不可变性和字符串池的概念。此外,还涉及了StringBuffer/StringBuilder、包装类和ArrayList的基本用法。

Uploaded by

xuczxc100
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views47 pages

Java Class 7

本文件介绍了Java基础语法,重点讲解了String类的构造、比较及常用方法,强调String的不可变性和字符串池的概念。此外,还涉及了StringBuffer/StringBuilder、包装类和ArrayList的基本用法。

Uploaded by

xuczxc100
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Java 基礎語法

常用類別
本堂教學重點

1. String 類別 2. StringBuffer/StringBuilder
1-1. String 建構 2-1. 常用方法

1-2. String 比較
1-3. String 常用方法
3. 包裹類別
3-1. 包裹類別物件建構
1-4. String 不可變更
3-2. 常用方法
1-5. String 切割
1-6. String 簡易格式化
4. ArrayList
4-1. ArrayList
4-2.自動裝箱、拆箱

2
String v.s. char

比較項目 String char


參考資料型別 基本資料型別
資料型別 (Data type)
Reference tpye Primitive type
Literal 資料的符號
使用雙引號 ( " ) 使用單引號(' )
Literal enclosed
抽象表現
類別 (class) Unicode
Represent
比較運算
equals( ) 或 (==) 雙等號 (==)
Operator Compared
記憶體內容值是否可變? 不可變 可變
String 建構
◆ 建立字串物件
 標準物件建構語法
String str1 = new String("Hello World!"); //一般物件建構
建構子 說明
String( ) 建立一個空字元序列的 String 物件
String(byte[ ] bytes) 使用指定的 byte 陣列內容,建構一個新的 String
String(char[ ] value) 使用指定的 char 陣列內容,建構一個新的 String
String(String original) 建立一個與字串參數相同的新 String 物件
String(StringBuffer buffer) 建立一個與字元緩衝參數相同的新 String 物件
 非標準物件建構語法 String(StringBuilder builder) 建立一個與字元緩衝參數相同的新 String 物件

String str2 = "Hello World!"; //literal方式賦值


⚫ 字串池重複使用

4
2 分鐘

下列程式片段執行結果為何?
char c1='A', c2='A';
String s1=new String("Hello");
String s2=new String("Hello");
[Link](c1==c2);
[Link](s1==s2);
a) true true
b) true false
c) 編譯錯誤
d) 發生執行錯誤
5
比較運算 ==
◆ "=="
 比較在 stack 中的變數內容是否相等
⚫ 基本資料型別 : 變數內容即為其值

⚫ 參考資料型別 : 物件是不是同一個
char c1 = ‘A’;
char c2 = ‘A’;
Java
c1 == c2 ? true !
0x1234 0x1234
s2

String s1 = new String(“Java”); s1 0xabcd Java


String s2 = new String(“Java”); c2 A 0xabcd
c1 A
s1 == s2 ? 0xabcd == 0x1234 ? false !
equals( ) 方法
◆ equals( ) 方法
 String 所提供的 equals( ) 來比較字串的實際內容
String s1 = new String(“Java”);
String s2 = new String(“Java”);
[Link]( s2 ) ? “Java” == “Java” true !

Java

0x1234 0x1234
s2
s1 0xabcd Java
0xabcd

7
字串池 String Literal Pool
◆ JVM 中存放字串的共用區域
 以非標準物件建構語法方式宣告的字串物件儲存到字串池中

 建立物件前檢查是否已有相同的物件
⚫ 如果有的話直接傳回參考值,不會新增字串物件

String s3 = “Java”;
String s4 = “Java”;

s3 == s4 ? 0xabcd == 0xabcd ? true !


0xabcd
s4 0xabcd
Java
s3 0xabcd
String 內容值比較結論
01 public class TestString {
02 public static void main(String[] args) {
03 String s1 = new String(“Java”);
04 String s2 = new String(“Java”);
05 String s3 = “Java”;
06 String s4 = “Java”;
07 [Link](s1 == s2); ➔ false
08 [Link](s3 == s4); ➔ true // String pool
09 [Link]([Link](s2));
10 [Link]([Link](s4)); ➔ true // 比較實際內容
11 }
12 }
String 常用方法
方法名稱 傳回值 說明
charAt(int index) char 返回指定索引處的 char 值。
equals(Object anObject) boolean 將此字串與指定的物件比較。
equalsIgnoreCase(String anotherString) boolean 將此字串與另一個字串anotherString 比較,不考慮大小寫。
compareTo(String anotherString) int 按字典順序比較兩個字串。
compareToIgnoreCase(String str) int 按字典順序比較兩個字串,不考慮大小寫。
hashCode( ) int 返回此字串的雜湊碼。
contains(CharSequence s) boolean 當當此字串包含指定的 char 序列時,返回 true。
startsWith(String prefix) boolean 測試此字串是否以指定的前綴開始。
endsWith(String suffix) boolean 測試此字串是否以指定的後綴結束。
indexOf(String str) int 傳回指定子字串在此字串中第一次出現處的索引。
lastIndexOf(String str) int 傳回指定子字串在此字串中最後一次出現處的索引。
isEmpty( ) boolean 當 length( ) 為 0 時傳回 true。
length( ) int 傳回此字串的長度。
intern( ) String 傳回字串物件的規範化表示形式
String 常用方法
方法名稱 傳回值 說明
concat(String str) String 將指定字串連接到此字串的結尾。
replace(char oldChar, char newChar) String 傳回一個新的字串,以 newChar 替換此字串中出現的所有 oldChar
replaceAll(String regex, String replacement) String 使用給定的 replacement 替換此字串所有符合給定的正則表達式的
子字串。
toLowerCase( ) String 使用預設語言環境的規則將此字串中的所有字元都轉換為小寫。
toUpperCase( ) String 使用預設語言環境的規則將此字串中的所有字元都轉換為大寫。
trim( ) String 返回字串的副本,忽略前導空白和尾部空白。
substring(int beginIndex) String 返回一個內容為此字串指定位置開始到結尾位置的子字串。
substring(int beginIndex, int endIndex) String 返回一個內容為此字串指定位置開始到指定位置結尾的子字串。
split(String regex) String[ ] 以符合給定正則表達式的元素切割此字串。
format(String format, Object... args) static String 使用指定的格式字串和參數傳回一個格式化字串。
matches(String regex) boolean 驗證此字串是否符合給定的正則表達式。
2 分鐘

下列程式片段執行結果為何?

String str = " java ".trim() + "programming".substring(0,7);

a) str所參考的字串物件的內容為java programm

b) str所參考的字串物件的內容為javaprogram

c) str所參考的字串物件的內容為javaprogramm

d) str所參考的字串物件的內容為java programming

12
2 分鐘

下列程式片段執行結果為何?
String str = "Hello";
[Link]("World");
[Link](str);

a) HelloWorld
b) Hello
c) World
d) 編譯錯誤
e) 發生執行錯誤
13
字串內容不可變更!?
◆ 字串內容是不可變更的 (immutable)
 當字串已在記憶體中被建立出來,該記憶體中的字串內容就不允許被變更。

String s = “Java”;
s = [Link](“SCJP”); 0x1234
[Link](s); ➔ JavaSCJP JavaSCJP
0xabcd

s 0x1234
0xabcd
Java

資源回收 Garbage Collection


String 內容不可變更
01 public class TestImmutable {
02 public static void main(String[] args) {
03 String s1 = “Java”;
04 s1 = [Link](“SCJP”);
05 [Link](s1); ➔ JavaSCJP
06 String s2 = “Java”;
07 [Link](“SCJP”);
08 [Link](s2); ➔ Java
09 String s3 = “Java”;
10 s3 = [Link](‘J’, ‘I’);
11 [Link](s3); ➔ Iava
12 String s4 = “Java”;
13 [Link](‘J’, ‘I’);
14 [Link](s4); ➔ Java
15 }
16 }
String 類別的split( ) 方法
◆ String 類別也提供 split( ) 方法來切割字串
 事實上是呼叫 Pattern 類別的 split( ) 方法
常用方法 傳回值 說明
split(String regex) String[ ] 以指定正則表示式之比對樣式 regex 來切割字串

public class StringSplit {


public static void main(String[ ] args) {
String shirts = "Blue Shirt, Red Shirt,
Black Shirt, Maroon Shirt";

String[ ] results = [Link](", ");


for(int i=0; i<4; i++){
[Link](results[i]);
}
}
}
字串簡易格式化
◆String 類別 format( ) 方法
Java 5.0 新增,程式可簡易的將輸出的資料格式化
格式化輸出方法 傳回值 說明
format(String format, Object... args) String 根據指定的格式化規則 (format) 及參數內容 (args),傳回一個
格式化字串
int id = 25;
String name = “王小明”;
[Link](”學號:”
String
[Link](“學號: + id +”\t姓名:”
output = [Link](“學號:
%05d\t姓名: + name);
%05d\t姓名:
%s%n”, %s”, id, name);
id, name);
[Link](output);
◆PrintStream 類別
格式化輸出方法 傳回值 說明
printf(String format, Object... args) PrintStream 根據指定的格式化規則 (format) 及參數內容 (args) 列印輸出
常用格式化輸出表
資料類型 說明 特殊符號 說明
%b, %B 格式化成布林類型(小、大寫) $ 指定要格式化的來源(1$,2$)
%d, %o, %x, %X 整數類型 (十、八進位、十六進位) < 使用前一個格式化資料來源
%f, %g, %e, %E 浮點數類型 (浮點數、科學符號, 自動) 0 使用0來當填充字元
%s, %S, %c, %C 格式化成字串、字元類型 # 不使填充字元
%n 代表換行 , 代表會加上千分位數
%% 代表% . 代表小數點

日期 說明 時間 說明 日期/時間 說明
%td 日,共2位,不足部分補0 %tH 時(24時制),共2位,不足部分補0 %tF 相當於「%tY-%tm-%td」
%tm 月,共2位,不足部分補0 %tI 時(12時制),共2位,不足部分補0 %tT 相當於「%tH:%tM:%tS」
%ty 年,共2位,不足部分補0 %tM 分,共2位,不足部分補0
%tY 年,共4位,不足部分補0 %tS 秒,共2位,不足部分補0
printf( ) & format( ) 範例
01 public class ExPrintf{
02 public static void main(String[] args) {
03 String name = args[0];
04 int id = [Link](args[1]);
05 double salary = [Link](args[2]);
06 [Link](“姓名: %S%n員工編號:
String s = [Link]("姓名: %S%n員工編號: %05d%n薪水:%,9.2f元%n",
%05d%n薪水: %,9.2f元%n",
07 name, id, salary);
name, id, salary);
08 [Link](s);
09 }
10 }
printf( ) & format( ) 範例
01 public class ExTime{
02 public static void main(String[] args) {
03 [Link] date = new [Link]();
04 [Link]("今天日期: %tF%n現在時間: %<tT%n", date);
05 }
06 }
5 分鐘

練習 : String
操作重點
1. 撰寫一個 [Link] 類別,檢查使用者輸入的字串是否為迴文
• 某字串由前面讀取與從後面讀取結果相同稱為迴文 (Palindrome)
• 忽略大小差異:將字串先轉為小寫
• 檢視字串第一個與最後一個字元,第二個與倒數第二字元,…是否相同
• 字串有奇數個字元時,最中間的字元不比對
• 使用 printf( ) 顯示結果

21
本堂教學重點

1. String 類別 2. StringBuffer/StringBuilder
1-1. String 建構 2-1. 常用方法

1-2. String 比較
1-3. String 常用方法
3. 包裹類別
3-1. 包裹類別物件建構
1-4. String 不可變更
3-2. 常用方法
1-5. String 切割
1-6. String 簡易格式化
4. ArrayList
4-1. ArrayList
4-2.自動裝箱、拆箱

22
StringBuffer / StringBuilder 類別
◆可變動內容 (Mutable) 的字串型態
 StringBuffer
capacity( )
⚫ thread safe

 StringBuilder H e l l o W o r l d
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
⚫ not thread safe
length( )
⚫ Java 5.0 新增

 提供進階處理字串的方法

 緩衝區不足時,會自動加大緩衝區
StringBuffer / StringBuilder 類別
◆常用處理字串的方法
 利用 append( ) 來改變字串內容
StringBuffer sb = new StringBuffer("Hi"); sb
Hi Java !
0xabcd
[Link](" Java!");
[Link]([Link]( ));

 利用 insert( ) 方法來選擇指定加入的位置
StringBuffer sb = new StringBuffer(“This is a dog");
[Link](10, "big ");
[Link]([Link]( ));
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

T h i s i s a b
d oi g d o g
StringBuffer / StringBuilder 常用方法
方法名稱 傳回值 說明
append(String str) StringBuilder 將指定的字串加到此 StringBuilder 之後
append(StringBuilder sb) StringBuilder 將指定的 StringBuilder 加到此 StringBuilder 之後
length( ) int 傳回此 StringBuilder 的字元個數
capacity( ) int 傳回此 StringBuilder 的容量
ensureCapacity(int minimumCapacity) void 確保 StringBuilder 容量至少等於指定的最小值
charAt(int index) char 傳回此 StringBuilder 中,指定位置的字元值
indexOf(String str) int 傳回此 StringBuilder 中,首次出現指定子字串的位置
lastIndexOf(String str) int 傳回此 StringBuilder 中,最後出現指定子字串的位置
insert(int offset, String str) StringBuilder 在 StringBuilder 指定位置之後插入指定字串
delete(int start, int end) StringBuilder 將 StringBuilder 中,start 到 end 位置中的字元移除
replace(int start, int end, String str) StringBuilder 將 StringBuilder 中,start 到 end 位置中的內容以指定字串取代
reverse( ) StringBuilder 將 StringBuilder 字元順序顛倒
toString( ) String 將 StringBuilder 變為一個內容不可變更的新字串傳回
substring(int start, int end) String 將 StringBuilder 中指定位置變為一內容不可變更的新字串傳回
2 分鐘

下列程式片段執行結果為何?
StringBuilder sb1=new StringBuilder("Hello");
StringBuilder sb2=new StringBuilder("Hello");
[Link]([Link](sb2));
a) true

b) false

c) 編譯錯誤

d) 發生執行錯誤

26
StringBuffer 範例
01 public class TestStringBuffer {
02 public static void main(String[] args) {
03 StringBuffer sb1 = new StringBuffer("Hi");
04 [Link](" Java!");
05 [Link]([Link]( ));
06
07 StringBuilder sb2 = new StringBuilder("This is a dog");
08 [Link](10, "big ");
09 [Link]([Link]( ));
10
11 StringBuffer sb3 = new StringBuffer("Hi Java!");
12 [Link]([Link](sb3));
13 }
14 }
StringBuilder 範例
01 public class Sum1to10 {
02 public static void main(String[] args) {
03 String op = "1";
04 int sum1 = 1;
05 for (int i=2; i<=10; i++){
06 op += "+"+i;
07 sum1 += i;
08 }
09 [Link](op + " = " + sum1);
10
11 var sb = new StringBuilder("1");
12 var sum2 = 1;
13 for (int j=2; j<=10; j++){
14 [Link]("+"+j);
15 sum2 += j;
16 }
17 [Link]([Link](" = ").append(sum1));
18 }
19 }
5 分鐘

練習 : StringBuffer / StringBuilder
操作重點
1. 撰寫 [Link] 類別
• 包含兩個 StringBuilder 屬性 name 及 phoneNumber
• 建構子:傳入name與phoneNumber
• modifyData(String lastname) 方法
✓ 以 append( ) 方法將名字 name 後面加上空白及姓氏
✓ 用 insert( ) 方法將電話號碼 phoneNumber 中適當位置加入 "-"
• displayPersonInfo( ) 方法屬性資訊如右
2. 撰寫 [Link] 類別
• 建立姓名 (Fernando) ,電話 (0223826015) 的 Person物件
• 呼叫 modifyData( ) 修改姓氏屬性資訊 (Gonzalezz)
• 呼叫 displayPersonInfo( ) 顯示屬性資訊

29
本堂教學重點

1. String 類別 2. StringBuffer/StringBuilder
1-1. String 建構 2-1. 常用方法

1-2. String 比較
1-3. String 常用方法
3. 包裹類別
3-1. 包裹類別物件建構
1-4. String 不可變更
3-2. 常用方法
1-5. String 切割
1-6. String 簡易格式化
4. ArrayList
4-1. ArrayList
4-2.自動裝箱、拆箱

30
包裹類別 Wrapper Class
◆ 基本資料型別 (primitive type) 有一個對應包裹類別 (Wrapper Class)

 將基本型態資料包裹成物件,以物件方式操作
⚫ 物件包含更多資訊及操作 基本資料型別 包裹類別
父類別
Primitive type Wrapper Class
⚫ 集合架構只接受物件型態 boolean Boolean
Object
char Character
 裝箱 boxing
byte Byte
⚫ 基本型別轉成包裹物件 short Short
int Integer
 拆箱 unboxing Number
long Long
⚫ 包裹物件中取出基本型別資料 float Float
double Double
包裹類別物件建構
◆ 包裹類別物件建構
 Java 9 之後標示為過時(depreated)

 使用類別方法 [Link](…)

32
2 分鐘

下列程式片段執行結果為何?
Integer i1=[Link](20);
Integer i2=[Link](20);
[Link](i1==i2);
a) true

b) false

c) 編譯錯誤

d) 發生執行錯誤

33
Integer 物件建構及常用方法
◆ 建構 Integer 物件
Integer i1 = new Integer(20);
Integer i2 = new Integer("20");
i4 0x5678
Integer i3 = [Link](20); 20 0x5678
i3 0x5678
Integer i4 = [Link]("20"); 0x1234
i2 20
0xabcd
0xabcd
 Integer Cache 整數快取
i1 20 0x1234

⚫ [Link]( ) 取得的 Integer 物件,應用來節省記憶體的使用

 -128~127的Integer 物件會被暫存,供下次相同 Integer 重複使用

 包裹類別物件是不可變更的 (immutable)
⚫ 物件建立後,其包裝的數值就不可改變
Integer 內容值比較
01 public class TestInteger {
02 public static void main(String[] args) {
03 Integer i1 = new Integer(20);
04 Integer i2 = new Integer("20");
05 Integer i3 = [Link](20);
06 Integer i4 = [Link]("20");
07 [Link](i1 == i2); ➔ false
08 [Link](i3 == i4); ➔ true // Integer Cache
09 [Link]([Link](i2));
10 [Link]([Link](i4)); ➔ true // 比較實際內容
11 }
12 }
01 public class TestInteger {
02 public static void main(String[] args) {
03 Integer i1 = new Integer(200);
04 Integer i2 = new Integer("200");
05 Integer i3 = [Link](200);
06 Integer i4 = [Link]("200");
07 [Link](i1 == i2); ➔ false
08 [Link](i3 == i4); ➔ false // 超過Integer Cache範圍
09 [Link]([Link](i2)); ➔ true // 比較實際內容
10 [Link]([Link](i4));
11 }
12 }
Integer 類別物件常用方法
◆ 常用方法
方法名稱 傳回值 說明
equals(Object obj) boolean 比較此 Integer 物件與傳入物件內容是否相等
intValue( ) int 以 int 型別傳回 Integer 物件的值
byteValue( ) byte 以 byte 型別傳回 Integer 物件的值
longValue( ) long 以 long 型別傳回 Integer 物件的值

◆ 工具方法
 Ex:將表示基本型別的字串轉為基本型別
方法名稱 傳回值 說明
parseInt(String s) int 將表示 int 的字串轉換成 int 型別
getInteger(String nm) Integer 取得指定名稱對應的整數型態系統屬性值

int i = [Link] ("20");


數字字串轉型
01 public class TestArgs {
02 public static void main(String[ ] args) {
03 [Link](“Total is: ” + (args[0]+args[1]));
04 int arg0 = [Link](args[0]);
05 int arg1 = [Link](args[1]);
06 [Link](“Total is: ” + (arg0+arg1));
07 }
08 }
2 分鐘

哪個命令可將“123456”;轉換為int ?

a) int number = (int)num;

b) int number = [Link]("1");

c) int number = [Link]("1");

d) int number = [Link](num);

38
本堂教學重點

1. String 類別 2. StringBuffer/StringBuilder
1-1. String 建構 2-1. 常用方法
1-2. String 比較
1-3. String 常用方法 3. 包裹類別
1-4. String 不可變更 3-1. 包裹類別物件建構
1-5. String 切割 3-2. 常用方法
1-6. String 簡易格式化
4. ArrayList
4-1. ArrayList
4-2.自動裝箱、拆箱

39
[Link]類別
◆ [Link] 類別
 Java提供之類別函式庫
陣列 array [Link] 集合
容量大小 需預先給定 可動態增加集合元素,不需事先指定
無法於執行時期動態增加元素
資料型別 陣列內只能置入同型別資料 集合内可置入不同型別的資料
內容 可置入基本資料型別或物件 只能置入物件
基本型別需用包裝器類別
元素處理 基本讀取 提供進階的方法處理集合內元素
ArrayList常用方法
方法名稱 傳回值 說明
add(Object o) boolean 從 ArrayList 的末端(end of this list)加入指定物件 element。
add(int index, Object element) void 沒有傳回值。將指定物件 element 加到 ArrayList 所指定的索引(index)位置,
並傳回此集合物件。
set(int index, Object element) Object 將 ArrayList 中指定索引位置的元素以指定物件 element 取代
addAll(Collection c) boolean 從 ArrayList 的末端(end of this list)加入集合 c
size() int 傳回此集合所有元素個數。
isEmpty() boolean 判斷此集合是否為空。若此集合是空的,將傳回true;反之則會傳回false。
contains(Object o) boolean 用以判斷指定物件o是否屬於該集合物件的成員之一,屬於傳回true,不屬於則傳回
false。
indexOf(Object o) int 回傳指定物件 o 在 ArrayList 上的索引位置。傳回值若為 -1 表示 ArrayList 集
合物件元素中並沒有包含指定物件 o。
get(int index) Object 取得 ArrayList 中指定索引位置的元素
equals(Object o) boolean 比較ArrayList物件與指定的物件o內容是否相同,指定物件o需亦為ArrayList集合,
且各元素內容均相同時傳回true。
clear() void 清除集合中的所有元素
remove(int index) Object 移除 List 中指定索引位置的元素,並傳回被移除的元素。
toString() String 將ArrayList集合中各元素以字串表示
ArrayList 範例
01 public class ArrayListExample {
02 public static void main(String[] args) {
03 [Link] myList;
宣告及建立 ArrayList 集合
04 myList = new [Link]();
05
06 [Link]("One"); 利用 add() 將元素資料加到 ArrayList 集合中
07
[Link]("Second");
08
[Link]("3rd");
09
[Link](new Integer(4));
10
[Link](new Float(5.0));
11
12
13 //列印ArrayList,利用toString()方法 ArrayList 的 toString()
14 [Link]([Link]());
15
16 //移除元素 利用 remove() 將指定元素由 ArrayList 中移除
17 [Link](0);
18 [Link]([Link]()-1);
19 [Link]("3rd");
20 [Link](myList);
21 }
22 }
裝箱、拆箱
◆ 基本型別與包覆類別 wrapper class 轉換
 Java SE 5 之前資料型態不一樣,不可混用
Integer i1 = 10;
int i2= new Integer(10);
 裝箱 boxing:基本型別轉成包裹物件 int i4 10
10

Integer i3 0x1234
⚫ 將int包裝為Integer物件 int i2 0x1234

Integer i3= new Integer(10); Integer i1 10


0x1234

 拆箱 unboxing :包裹物件中取出基本型別資料
⚫ 將Integer物件的int值取出
int i4= [Link]( );
自動裝箱、自動拆箱
◆ J2SE 5.0 提供自動裝箱 (Auto-boxing) 及自動拆箱 (Auto-unboxing)
功能
自動裝箱 : 自動拆箱 :

Integer i1 = 10; int i2= new Integer(10);

int i = 10; Integer i = new Integer(10);


Integer j = i; int j = i;

Number number = 3.14f;


自動裝箱、拆箱
◆ 運算時之自動裝箱與拆箱
自動裝箱

Integer i = 10;
[Link](i + 10); 自動拆箱再運算

[Link](i++);
自動拆箱再運算

Boolean boo = true; 自動裝箱


[Link](boo && false);

自動拆箱再運算
5 分鐘

練習 : 類別進階操作
操作重點
1. 撰寫 [Link]:
• 驗證 main( ) 傳入參數,沒有傳入參數或參數值為 “ help” 字串,列印使用方法訊息如下:
程式用法: java GuessingGame [傳入參數]
傳入參數為 1-5 間的整數
• 傳入參數值轉換為整數儲存於 int guessing
• [Link]( )*5+1產生 1-5 之間整數為答案 answer
• 若傳入參數 >5 或 <1,在螢幕上列印錯誤訊息如下:
傳入參數錯誤,請輸入 1-5 間的整數
• 若傳入參數在 1-5 之間,比對 guessing 與 answer
✓ 若兩者不同列印 "很抱歉,答案是"+answer
✓ 若兩者相同列印 "恭喜你,猜對了!"

46

You might also like