頁 數/段數/行數 | 更 正前 | 更 正後 |
iv/2-1 | 武功新法 | 武功心法 |
1-9 | STEP 04 和 05 可以不要執行 | |
1-24/ 第 6 題 | 將其變 更為 "Hello World" | 將其變 更為 "Hello World"(含雙引號) |
2-2/第 2-1 節的標題 | 武功新法 | 武功心法 |
2-6/第 2 段 | 程式的第 01, 02, 03, 07 行 | 程式的第 01, 02, 03, 08 行 |
2-10/第 2 個框框 | 類別名稱物件名稱 = new 類別名稱(); | 類別名稱 物件名稱 = new 類別名稱(); |
2-12/DisplayCurrentDate2 程式碼的第 05 行 | 05 class DisplayCurrentDate2 | 05 public class DisplayCurrentDate2 |
2-19/練習題/第 6 行 | 在下列程式中 | 3. 在下列程式中 |
3-3/ 倒數第 7 行 | 圖 3.2-1 | 圖 3.1-1 |
3-12/ 練習題/第 2 行 | 圖 3.1-4 | 圖 3.2-4 |
3-14/ 練習題/最後一行 | 總共有 多少為數 | 總共有 多少位數 |
3-23/ | 加到最 後一段(大多數運算子的結合規則...)之前 |
上列運算式的運算順序,有一個更嚴謹的表達方式。由 於運算優先順序、運算規則、以及結合規則的關係,上列運算式的運算過程如下: 1. 由於優先順序以及結合規則的關係,Java會首先將 y – z 結合(或稱 group)在一起,而形成如下的運算式: x = (y – z) + m; 2. 然後,Java把 (y – z) + m 結合成 ((y – z) + m)。 x = ((y – z) + m); 3. 依據運算規則,先運算 = 號右邊的 ((y – z) + m);由於必須先算出 + 左邊的運算元,因此 y – z 首先被執行。 4. y – z 計算之後,再來 依次執行 +,最後 =。 |
3-24/ | 步驟 1 到 4 刪除 |
1. 運算式中總共有六個運算子(包含一個 =,兩個加法 +,一個負號 -,一個 *,以及一個 /);其中 – 這個運算子是一個單一運算元的運算子。由於它的優先 順序最高,所以第一個結合的部份就是 (–b)。 2. 由於 * 和 / 的優先順序較高,而且結合規則是由左而右,因此Java會先結合 (c*d),然後再結合 e 而成 ((c*d) / e)。 3. 類似步驟二的原理,Java 會先結合 (a + (–b)),然後再結合第二個步驟的結果而成 ((a + (–b)) + ((c*d) / e))。 4. 由於執行 = 之前,Java必須先取得步驟三的結果,因此Java開始運算((a + (–b)) + ((c*d) / e))。 5. Java首先看到 +,所以先求取其左邊運算元(也就是(a + (–b)))的結果;由於a的值為已知,所以第一個執行的運算子就是負號 -(也就是計算 –b),左右兩邊的運算元都取得後,再來就是執行 +。 6. 由於步驟五已經得到運算式 ((a + (–b)) + ((c*d) / e)) 左邊運算元的值,再來Java就開始計算右邊運算元(也就是 (c*d) / e))的值。由於必須先計算 (c * d) 的值,所以 * 是第三個執行的運算子,然後才是 /。 7. 這時候由於運算式 ((a + (–b)) + ((c*d) / e)) 左 右兩邊的運算元都計算出來了,所以 + 就被執行。 8. 最後,就執行 = 把運算式 ((a + (–b)) + ((c*d) / e)) 的 結果指定給x。 |
3-24/ 圖 3.4-3 | ![]() |
![]() |
3-43/TestConstant 程式碼第 02 行 | String[] argv | String[] args |
3-48/表3.10-1/第 5 列 | 從字串中取出從索引位置 beginIndex 開始一直到索引位置 endIndex 的子字串 | 從字串中取出從索引位置 beginIndex 開始一直到索引位置 endIndex-1 的子字串 |
3-56/ 第 4 題 | d1 = new Date; | d1= new Date(); |
3-57/ 第 11 題 | 請將本 題移到第四章的習題 | |
3-59/ 第 24 題 | ![]() |
![]() |
4-8/程式碼倒數第 3 行 | return hours * 10; | return hours * 100; |
4-9/圖 4.1-2 | house=15 | hours=15 |
4-25/練習題/第 3 題 | n = new String(w.getName()); n = w.getName(); |
name = new String(w.getName()); name = w.getName(); |
4-55/第 4 題 |
假設已經存在一個 Person 類別,該類別包含資料成員 name(和 birthday)以及必要的 accessor/mutator。請定義一個 Vehicle 類別, 該類別的資料成員只包含 owner(資料型態為 Person);方法成員包含一對 accessor 及 mutator ,其中 accessor 是拿來取得 owner 資料,mutator 是拿來設定 owner 的資料;此外,請另外定義 getOwnerName() 方法讓它可以存取 Person 類別的 name。[ 提示:若允許,可以將 birthday 加 進需求而新增 getOwnerBirthday() 方法] |
|
4-55/第 6 題/程式碼第 3 行 | compute(flat x) | compute(float x) |
5-14/ 第二個程式方塊的第一個敘述 | if(amount >= 20000) { | if(amount >= 200000) { |
5-16/ 片段 1 和片段 2 | if(amount >= 20000) | if(amount >= 200000) |
5-17/ 第一個程式方塊 | if(amount >= 20000) { | if(amount >= 200000) { |
5-17/ 片段 3 和片段 4 | if(amount >= 20000) | if(amount >= 200000) |
6-12/練習題 | 如果程式中 N! 的資料型態為 int,請讀者在執行程式的時候,注意一下輸出的值,並說明為什麼? | 如果程式中 N! 的資料型態為 int,當 N 越來越大的時候,請注意一下輸出的值,會不會有很怪的結果?如果有,請說明為什麼? |
6-15/第一個程式方塊 | for(int j=0; j<=i; j++) | for(int j=1; j<=i; j++) |
6-16/第一個程式方塊 | for(int i=1; i<=n; i--) { | for(int i=1; i<=n; i++) { |
6-16/第一個程式方塊 | print("*"); 和 println(""); | System.out.print("*"); 和 System.out.println(""); |
6-17/第一個程式方塊 | for(int i=0; i<n; i--) { | for(int i=0; i<n; i++) { |
6-17/第一個程式方塊 | print("*"); 和 println(""); | System.out.print("*"); 和 System.out.println(""); |
6-18/第一個程式方塊 | print("*"); 和 println(""); | System.out.print("*"); 和 System.out.println(""); |
6-39/練習題 | Fibanacci | Fibonacci |
6-40/第1題 | 將題目從第6章移到第12章,並將題目改成"使用者執行Java程式的時候,可以在命令列輸入參數給 該Java程式使用。請寫一個Test.java,該程式會列印出使用者輸入的參數; 若參數個數大於一,則列印出的每一個參數之間以逗點分開。" | |
6-40/第3題 | 試 利用while迴圈將習題2的內容改寫。 | 請將習 題2的內容改寫成 while 迴圈。 |
6-40/第4題 | 試 利用do while迴圈將習題2的內容 改寫。 | 請將習 題2的內容改寫成 do-while 迴圈。 |
6-40/第5題 | real | double |
6-40/第6題 | 請移到第3章 | |
6-41/第12題/程式碼第3行 | public void setLength(double length) { | public void setLength(double len) { |
6-41/第12題/第4小題的第3行 | 的敘述,這個敘述被定義 | 的 方法,這個方法被定義 |
6-42/第13題/程式碼第1行 | for(int i=1.0; i<2.0; i+=0.1) { | for(int i=1; i<2.0; i+=0.1) { |
6-42/第14題 | 試將下列程式碼,將它轉換成另一種描述方式,從 do-while 到 loop-and-a-half 格式。 | 若 將下列的程式碼 while 內的條件式改成 true,試修改下列程式碼使得修改後的執行結 果與修改前相同。 |
6-42/第16題/第2行 | 只做這一次迴圈 | 跳出迴圈 |
6-43/第17題 | 試 利用 loop 方法 | 試 利用迴圈方式 |
6-43/第18題/程式碼 | 請在第3行和第4行之間加入 public Circle() { } |
|
6-43/第18題/第3小題 | 試 寫一段程式碼來定義一個新的建構元。 | 試 寫一段程式碼來使用前一題的建構元。 |
6-43/第18題/第4小題 | 及輸入所有五個圓的所有範圍 | 並 輸出五個圓的面積總和 |
8-23/ 第 7 行 | integer、 flood、double | integer、 float、double |
8-31/ 第 5 題 | 請將本 題移到第 12 章 | |
8-31/ 第 8 題/程式碼第2、3行 | w.setName("John"). setHours(45); |
w.setName("John").setHours(45); |
9-37/圖 9.7-1 | 圖右邊的 private 和 none 要對調 | |
9-39/圖 9.7-2 | 圖右邊的 private 和 none 要對調 | |
9-40/Worker 程式碼 | public String name; | protected String name; |
9-44/Worker1 程式碼 | public String name; | protected String name; |
9-51/9-10.1節最後一段 | 由於 w 實際上是一個 SalaryWorker 的物件..... | 由於 w 實際上是一個 SalaryWorker 的物件,而 SalaryWorker 物件又是一個 Worker 物件,因此兩個 if 敘述的結果都是 true。 |
9-57/第 8 題 | 可能不能用 super.super.add() | 能不能用 super.super.add() |
10-41/ 第 8 題/第 (1) 題 | 請重新撰寫Vehicle的敘述,讓 Vehicle不能被建立。 | 請重新撰寫Vehicle,使得 Vehicle 物件不能被建立。 |
10-41/ 第 8 題/第 (2) 題 | 而Car必須有其它的資料成員如下所述 | 而Car必須有的成員如下所述 |
10-43/ 第 6 題/程式碼第2行 | int (num < 0) { | if (num < 0) { |
10-44/ 第 10 題 | 讓 gender 的值不是MALE就是FEMALE。 | 若 gender 的值不是 MALE 也不是 FEMALE 的時候,會出現 aeertion error。 |
11-2/11-2節 第2行 | 允許一個單一的變數可以參考(refer)多個物件 | 允許一個單一的變數可以參考(refer)不同類別型態的物件 |
11-4/第1行 | 參考多個物件 | 參考不同類別型態的物件 |
11-18/練習題第一行的最後一句 | 請問跟繼承架構, | 請問該繼承架構 |
11-23/第一行 | 究竟應該把需要的類別設計成繼承架構中的父類別(一般類別、或者是抽象類別)?還是應該設計成介面型態? | 究竟應該把繼承架構中的父類別設計成一般類別、抽象類別、或者是介面型態? |
12-3/ 第二段第二行第二句 | 就跟之 前 new 物件的方是一樣 | 就跟之 前 new 物件的方式一樣 |
12-7/ 練習題/加上一句話 | 並定義 下列功能的方法:計算總薪資、平均薪資、查詢某一月份的薪資、以及回傳12個月份薪資清單的字串。 | |
12-9/ 第三行 | 大小為 3 | 大小為 5 |
12-21/ 圖 12.4-9 修改 | ||
12-27/第一段第一行 | (一般簡寫成3x4) | (一般簡寫成4x3) |
12-34/ 最後一行 | 圖 12.7-2 所示 | 圖 12.7-2(a) 所示 |
12-35/ 圖 12.7-2 | 在圖的
下方加上 (b);另外,再加上下圖並標示為 (a)。 |
|
12-35/ 第三行 | sales [0]。 | sales [0],如圖 12.7-2(b) 所示。 |
12-37/第一個程式碼的第五行 | sales[4] = new int [2]; | sales[3] = new int [2]; |
12-42/第二段的第五行 | :請留意,雖然修改後,......,其姓名仍然是John: | 刪除(從第五行的冒號一直到第六行的冒號),並加入分號(;) |
12-45/ 第二個程式碼區塊 | Worker w = any.get(2); | Worker w = (Worker) any.get(2); |
12-54/ 第15題最後幾個字 | 它本身索引值 | 它本身索引值的和 |
13-8/第四段第一行 | Write 類別 | Writer 類別 |
13-23/第二行 | 利用 File 物件來開始檔案 | 利用 File 物件來開啟檔案 |
13/31/第三和四行 | showOpenDigloa() 方法 | showOpenDialog() 方法 |
13/31/第四行 | 如果使用者選擇"取消"按鈕 | 如果使用者點選"開啟"按鈕 |
13-38/第7題第一句 | 來 得到整檔案 | 來 得到整個檔案 |
14-18/第一段第二行 | 像監控者註冊 | 向監控者註冊 |
14-24/第三段第一行 | Input、、compButton、和 clrButton | Input、compButton、和 clrButton |
14-33/練習題 | 最好每一個區塊都是一下 | 最好每一個區塊都試一下 |
14-35/ 圖 14.6-5 | npan | cpan |
14-35/ 最後一段第三行 | 兩個 npan 都改成 cpan | |
14-50/ 程式碼/第 10 行 | display(e, sport); | display(e, computer); |
14-50/ 程式碼/第 13 行 | display(e, sport); | display(e, movie); |
14-53/第一段第四行 | 我們知道能處理 JCheckBox | 我們知道能處理 JRadioButton |
14-85/ 第13題 | 假設我們定義了一個父類別名稱為 Employee以及其二個子類別HourlyEmployee及SalaryEmployee,這三個類別的程式碼列示如下。在程 式碼中,我們也提供了部份的GUI測試程式。下面的圖呈現了這個程式執 行的畫面:使用者可以輸入想用HourlyEmployee還是SalaryEmployee;若使用者選擇SalaryEmployee,第二個文字欄位的標籤會變成”Salary”,如圖 (a)所示。若使用者選擇HourlyEmployee,第二個文字欄位的標籤會變成”Hours”,如圖 (b)所示。當姓名和薪資(或者工作時數) 輸入完成並點選”OK”按鈕,這些輸入的值會產生一個相對應 的HourlyEmployee或者SalaryEmployee物件;為了簡化問題,我們假設最多只 會產生10個員工物件。若使用者點選”Total”按鈕,則該物件的薪資會被顯示出來, 如圖 (b)所示。請完成下列程式碼中問題 (I)、(II)、和 (III)並定義程式所需的TotalAction類別。 | |
14-85/ 第13題/加上程式碼 |