第五周作業


學號 20172313 《程序設計與數據結構》第五周學習總結

教材學習內容總結

這周着重學習了循環語句和條件語句的語法和使用,對原先簡單涉及的邏輯運算符也進行了系統詳細的學習。原先對if語句的嵌套使用不夠熟練,在這周的學習任務中進行了學習。以前因為語句塊的編寫也犯了一些錯誤,這周也進行了學習。還有一部分是對以往知識的復習和鞏固。這周的學習內容大致就是這些了吧。

教材學習中的問題和解決過程

  • 問題1:不是很清楚java中字符串是如何比較大小的
  • 問題1解決方案:compareTo() 的返回值是int, 它是先比較對應字符的大小(ASCII碼順序)
    1、如果字符串相等返回值0
    2、如果第一個字符和參數的第一個字符不等,結束比較,返回他們之間的差值(ascii碼值)(負值前字符串的值小於后字符串,正值前字符串大於后字符串)
    3、如果第一個字符和參數的第一個字符相等,則以第二個字符和參數的第二個字符做比較,以此類推,直至比較的字符或被比較的字符有一方全比較完,這時就比較字符的長度.

例:
String s1 = "abc";
String s2 = "abcd";
String s3 = "abcdfg";
String s4 = "1bcdfg";
String s5 = "cdfg";
System.out.println( s1.compareTo(s2) ); // -1 (前面相等,s1長度小1)
System.out.println( s1.compareTo(s3) ); // -3 (前面相等,s1長度小3)
System.out.println( s1.compareTo(s4) ); // 48 ("a"的ASCII碼是97,"1"的的ASCII碼是49,所以返回48)
System.out.println( s1.compareTo(s5) ); // -2 ("a"的ASCII碼是97,"c"的ASCII碼是99,所以返回-2)

  • 問題2:不理解break和continue的區別究竟在哪?書上說它與break語句類似,但不同的是循環控制條件將再次被計算,如果其值仍然為true,則再次執行循環體。不是很理解
  • 問題2解決方案:Java中關鍵字continue、break和return的區別:
    continue:跳出本次循環繼續下一次循環
    break: 跳出循環體,繼續執行循環外的函數體
    好吧,一開始是沒有讀懂書上是什么意思,想着continue跳出循環體了為什么還要執行循環,查閱資料后知道不是這樣,continue只是跳出了本次循環而已。

代碼調試中的問題和解決過程

  • 問題1:做習題pp5_1的時候,提示我有if,沒有else。

  • 問題1解決方案:我檢查了一遍代碼發現了錯誤,因為else子句僅僅包含第一條子句,我在代碼中添加了花括號,果然就能夠成功編譯了。

  • 問題2:盡管我能夠成功編譯,但我發現我無論怎么改變輸入年份的數值,其結果都是閏年...

  • 問題2解決方案:我又檢查了一遍,原來是我錯誤的吧num6, num7,num8定義為double形變量了。我進行改正后可輸出結果還是沒有改變,(。-_-。)原來我計算的時候又忘記先轉換數據類型了(在上一周就犯過這種錯誤,也在博客中有所體現,不在過多闡述)改正后,代碼就能夠成功編譯運行了。

  • 問題3:做習題5_3的時候無法正常運行(呃...,忘記截圖了)

  • 問題3解決方案:我用網上找來的方法利用Integer的valueOf方法返回的是數字的ascii碼的形式,而不是int,我也能夠成功的將習題5_3解決。但我不知道如果用書上給的方法要怎樣解決,在向助教請教后知道:在字符的前后各加一個雙引號就把這個字符轉換為字符串了,問題也就迎刃而解了( ̄▽ ̄)~*

  • 問題4:做習題5_7的時候無法進行多次輸入。總是會在問是否繼續進行的時候直接終止。

  • 問題4解決方案:我想到以前有同學在藍墨雲上詢問過這個問題。於是我又找來復習了一遍。

  • nextInt只讀取整數,並沒有讀取輸入進去的\n,也就是說后面的nextLine會讀取\n,但並不返回,會導致后面的一個語句顯示沒有讀取輸入就直接跳過了。

  • 我在下面又加了一行nextLine,問題就得以解決了。

代碼托管

上周考試錯題總結

  • 錯題1: In order to preserve encapsulation of an object, we would do all of the following except for which one?
    A . Make the instance data private
    B . Define the methods in the class to access and manipulate the instance data
    C . Make the methods of the class public
    D . Make the class final
    E . All of the above preserve encapsulation
  • 解析:封裝意味着類包含操作數據所需的數據和方法。 為了正確地保護封裝,不應該從類的外部直接訪問實例數據,因此實例數據將變為專用,並定義方法來訪問和操作實例數據。 此外,訪問和操作實例數據的方法已公開,其他類可以使用該對象。 保留字“final”用於控制繼承,與封裝無關。
  • 這道題由於對概念的理解不清導致了錯誤。
  • 錯題2: Consider a sequence of method invocations as follows: main calls m1, m1 calls m2, m2 calls m3 and then m2 calls m4, m3 calls m5. If m4 has just terminated, what method will resume execution?
    A . m1
    B . m2
    C . m3
    D . m5
    E . main
  • 解析:一旦方法終止,控制就會繼續使用調用該方法的方法。 在這種情況下,m2調用m4,以便當m4終止時,m2被恢復。
  • 這道題我起初在做的時候沒有弄懂這道題的意思,直到最后看個人解析的時候才明白這道題的真正意思...
  • 錯題3: Instance data for a Java class
    A . are limited to primitive types (e.g., int, float, char)
    B . are limited to Strings
    C . are limited to objects(e.g., Strings, classes defined by other programmers)
    D . may be primitive types or objects, but objects must be defined to be private
    E . may be primitive types or objects
  • 解析:實例數據是構成類的實體,可以是任何可用的類型,無論是基元還是對象,並且可以是公共或私有的。 通過使用對象作為實例數據,它允許該類建立在其他類上。 這個關系中類的實例數據是其他類的關系被稱為has-a關系。
  • 還是對對概念理解不清吧,認為示例數據僅限於對象
  • 錯題4: Consider a method defined with the header: public void doublefoo(double x). Which of the following method calls is legal?
    A . doublefoo(0);
    B . doublefoo(0.555);
    C . doublefoo(0.1 + 0.2);
    D . doublefoo(0.1, 0.2);
    E . all of the above are legal except for D
  • 解析:在A的情況下,值0(一個int)被加寬為一倍。 在C的情況下,執行加法產生0.3,然后調用doublefoo。 D中的參數列表是非法的,因為它包含兩個雙參數而不是1。
  • 這道題就是馬虎了,認真一點是可以做對的。
  • 錯題5: Visibility modifiers include
    A . public, private
    B . public, private, protected
    C . public, private, protected, final
    D . public, protected, final, static
    E . public, private, protected, static
  • 解析:Public,private,protected控制變量和方法的可見性。最終控制是否可以進一步更改或覆蓋變量,方法或類,而不是可見性。靜態控制變量或方法是否與類的實例或類本身相關聯。
  • 這道題也是書本上的知識沒有記牢...
  • 錯題6: During program development, software requirements specify
    A . how the program will accomplish the task
    B . what the task is that the program must perform
    C . how to divide the task into subtasks
    D . how to test the program when it is done
    E . all of the above
  • 解析:規范階段是了解手頭的問題,以便程序員可以確定需要做什么來解決問題。 上面列出的其他工作是設計階段(A,C)和測試階段(D)的一部分。
  • 這道題確實是不知道,記下來記下來(・_・)ヾ
  • 錯題7: Inheritance through an extended (derived) class supports which of the following concepts?
    A . interfaces
    B . modulary
    C . information hiding
    D . code reuse
    E . correctness
  • 解析:通過擴展一個類並繼承它,新類不必重新實現任何這些繼承的方法或實例數據,從而節省了程序員的工作量。 因此,代碼重用是為了您的需要擴展它而重用其他代碼的好處。
  • 代碼繼承還沒有學吧...先記下來再說

其他

因為上周直接學習的第7單元顯得有些吃力,這周的內容的難度有所下降,我認為學習起來是輕松了一些的,但通過這周的學習還是發現了自己的許多不足,有道課后的代碼作業由於自己的粗心大意導致卡了很長時間。在測驗中也發現自己的許多錯誤都是由於對教材上的概念理解不清導致的,在以后的學習生活中爭取彌補這些不足。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 126 1/1 20/20
第二周 388/466 1/2 15/35
第三周 706/1162 1/3 17/52
第四周 1104/2266 1/4 20/72
第五周 1126/3392 1/5 15/87
  • 計划學習時間:17小時

  • 實際學習時間:17小時

參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM