20172321 2017-2018-2 《程序設計與數據結構》第5周學習總結
教材學習內容總結
- 知道了相等性、關系與邏輯運算符的用法,尤其是==和賦值運算符=的區別,算數運算符優先級高於相等性和關系運算符。
- if語句和if-else語句,以及if的嵌套,注意適當的縮進增強可讀性,合理運用{ }來使用語句塊和界定else屬於哪一條if。
- 數據的比較,特別的是浮點數的比較盡量少用==;數字在大寫字母前,大寫字母在小寫字母前。
- 三種功能等價的循環語句while、do、for,do一定執行一次循環體,for用於知道需循環幾次,for中break的重要性。
- 避免無限循環。
- 用於管理對象集的ArrayList類,處理相關的一組元素的迭代器。
教材學習中的問題和解決過程
- 問題1:if的縮進格式以及大括號的使用。
- 問題1解決方案:自己仿造書上編寫了一些程序,來實驗它們的用法,縮進格式對程序沒有影響只是為了理解容易,大括號對循環的作用很大,改變循環的內容。
- 問題2:迭代器的意義,以及hasNext()的用法。
- 問題2解決方案:看完書上的例題並不能完全理解,之后又學習了下一章的for-each,再練習了5.5的自測題,勉強弄懂了。
- 問題3:== 和 eqaul的用法和區別。
- 問題3解決方案:相等性運算符和關系運算符可用來比較字符,但是不可以用來比較字符串。 ==:比較的是兩個字符串內存地址的數值是否相等,屬於數值比較;equals():比較的是兩個字符串的內容,屬於內容比較。以后進行字符串相等判斷的時候都使用.equals()。
代碼調試中的問題和解決過程
-
問題1:一些類的方法使用不熟練,比如這里整形和字符串之間的轉換。
-
問題1解決方案:按照書上的例題,自己重新設計一些簡單的程序單獨實驗這些方法的用法。
-
問題2:忘記了字符串和ArrayList引索是從0開始排序的,在使用比如charAT()、add(E obj)這樣的方法總會出現這樣的錯誤提示
-
問題2解決方案:當時一直沒能發現為什么錯了,不斷修改各個部分進行嘗試最后才找到錯誤。
-
問題3:在if的嵌套里面很容易犯錯,比如用錯了大括號或者else對應了錯誤的if
-
問題3解決方案:使用正確的縮進格式很有必要,在檢查程序時可以方便更改。
-
問題4:在循環語句里,一些變量賦值的位置不對,一些變量該在循環之外賦值,有些應該隨着循環不斷改變
- 問題4解決方案:在編寫循環體之前應該有明確的思路,考慮好變量的使用位置,在合適的位置進行聲明、賦值。
代碼托管
上周考試錯題總結
-
錯題1
Which of the sets of statements below will add 1 to x if x is positive and subtract 1 from x if x is negative but leave x alone if x is 0?
A . if (x > 0) x++;
else x--;
B . if (x > 0) x++;
else if (x < 0) x--;
C . if (x > 0) x++;
if (x < 0) x--;
else x = 0;
D . if (x == 0) x = 0;
else x++;
x--;
E . x++;
x--; -
理解情況:當時對but leave x alone 的理解錯了,所以選了C,應該是不管X了,所以應該是B。
-
錯題2
Assume that count is 0, total is 20 and max is 1. The following statement will do which of the following? if (count != 0 && total / count > max) max = total / count;
A . The condition short circuits and the assignment statement is not executed
B . The condition short circuits and the assignment statement is executed without problem
C . The condition does not short circuit causing a division by zero error
D . The condition short circuits so that there is no division by zero error when evaluating the condition, but the assignment statement causes a division by zero error
E . The condition will not compile because it uses improper syntax -
理解情況:因為一個&&條件的左手邊是假的,條件是短路的,所以右手邊沒有被評估。從而避免了零誤差的可能除法。因為條件是錯誤的,語句Max=total/count沒有執行,同樣避免了零錯誤的潛在除法。所以不選D而是選A。
-
錯題3
If x is an int where x = 1, what will x be after the following loop terminates?
while (x < 100)
x *= 2;
A . 2
B . 64
C . 100
D . 128
E . none of the above, this is an infinite loop
正確答案: D 你的答案: B -
理解情況:當X=64時仍然小於100,還會再執行一次。
-
錯題4
Which of the following are true statements about check boxes?
A . they may be checked or unchecked
B . radio buttons are a special kind of check boxes
C . they are Java components
D . you can control whether or not they will be visible
E . all of the above
正確答案: E 你的答案: A -
理解情況:當時不知道復選框,后來仔細看書才知道都是對的。
-
錯題5
In Java, selection statements consist of the if and if-else statements.
A . true
B . false
正確答案: B 你的答案: A -
理解情況:還應該有switch語句。
-
錯題6
An if statement may or may not have an else clause, but an else clause must be part of an if statement.
A . true
B . false
正確答案: A 你的答案: B -
理解情況:java允許if語句或if-else語句。但else只能作為if語句的一部分。
-
錯題7
The following for-loop is an infinite loop.
for (int j = 0; j < 1000; ) i++;
A . true
B . false
正確答案: A 你的答案: B -
理解情況:此循環將J初始化為0,並將其與1000進行比較,但在每次循環迭代后不會更改J。實際上,當值太大而無法存儲在內存中時,循環最終將以運行時錯誤結束,但邏輯上這是一個無限循環。
-
錯題8
In Java, it is possible to create an infinite loop out of while and do loops, but not for-loops.
A . true
B . false
正確答案: B 你的答案: A -
理解情況:這是真的,而while和do循環可以是無限循環,但for循環可以是無限循環。這在許多其他編程語言中都不是真的,因為for-loops有一個集的起點和結束點,但是java for-loops比大多數其他語言的for-loops靈活得多。
學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一周 | 189/189 | 1/1 | 18/18 | |
第二周 | 250/439 | 2/3 | 21/39 | |
第三周 | 437/876 | 3/6 | 25/64 | |
第四周 | 659/1535 | 2/8 | 31/95 | |
第五周 | 647/2182 | 1/9 | 30/125 |