1. 程式人生 > >20172313 2017-2018-2 《程序設計與數據結構》第六周學習總結

20172313 2017-2018-2 《程序設計與數據結構》第六周學習總結

ipp other err error 每次 測試 依次 們的 小寫

20172313 2017-2018-2 《程序設計與數據結構》第六周學習總結

教材學習內容總結

  1. 學習了如何聲明和使用一個數組。
  2. 學習了要進行邊界檢查,確保只因用數組有效範圍之內的索引值。
  3. 學習了數組不同的聲明方式和初始化方式。
  4. 學習了當數組保存對象時的使用。
  5. 初步學習了命令行實參的使用。
  6. 學習了如何在調用方法時怎樣接受任意個數的參數。
  7. 初步學習了二維數組的使用

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

  • 問題1:書上在介紹數組的概念時,說數組的索引值從0開始而不是從1開始能夠使元素地址的計算更為簡單。
  • 問題1解決方案:如果索引為0的話,那麽數據起始地址也就是0了,在計算的時候不用再進行相加運算,從而提高了訪問效率。
  • 問題2:剛開始學習命令行實參時,真的有點懵,不明白書上所要表達的意思是什麽。
  • 問題2解決方案:在看了書上的例題後,又從資料上又找了個示例,算是初步弄明白了。
  • 代表運行是傳入的參數,
    main(String[] args){
    System.out.print("args[0] = " + args[0]);
    }
    如果運行的時候,假設程序名是testMain.java
    然後輸入 java testMain hello;
    輸出的就是args[0] = hello;

  • 問題3:在學習書上的例題8.8的時候,實在是不知道increaseSize的含義到底是什麽。
  • 我一度還上網搜索並且還翻看了之前學習的內容,我以為是我在哪個部分的知識存在著遺漏,直到最後我才發現原來方法是寫在代碼最後的/(ㄒoㄒ)/~~,學習的進程才又一次得以進行。這也為我提供了一個編寫代碼的的格式,在前面先寫上一個方法來解決問題,最後再對方法進行詳細的闡述。

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

  • 問題1:在做習題8_1的時候,運行代碼時總顯示我有非法字符。可我在代碼裏並沒有其他的非代碼字符啊。
    技術分享圖片

  • 問題1解決方案:我仔細的看了下,原來是我把分號用成中文的了,原來我用vim進行編寫的時候,中英文的標點符號差距比較明顯,所以也就更好區分。換用IDEA後暫時還沒有習慣過來,以後還是要多加小心才是。
  • 問題2:在編寫習題8_5的時候,在屏幕上輸出是否繼續輸入後並不能輸入,直接跳過了這一不,並且顯示標準方差不存在。
    技術分享圖片

  • 問題2解決方案:由於不能輸出,所以我就想我的another=scan.nextLine到底是哪出了錯誤,我仔細檢查了一遍,前後也不存在中英文半角符號用錯的現象,語法上也沒有出現問題,我就又聯想到了以前王老師上課時所講的問題,我原來也犯過這種錯誤,為了加深印象,在這裏再一次進行記錄。
  • nextInt只讀取整數,並沒有讀取輸入進去的\n,也就是說後面的nextLine會讀取\n,但並不返回,會導致後面的一個語句顯示沒有讀取輸入就直接跳過了。

  • 問題3:還是在做習題8_5的時候,不能正確的顯示標準方差的值。
    技術分享圖片

  • 問題3解決方案:這個是由於粗心大意問題連計算時的表達式的代碼都寫錯了( ̄_ ̄),這裏也就不過多贅述了,直接附上正確的代碼圖。
    技術分享圖片

  • 問題3:在編寫習題8_6的時候,提示我沒有返回語句,可我明明是寫了返回語句的。
    技術分享圖片

  • 問題3解決方法:我反復對代碼進行了檢查,發現我的return語句是在if條件語句之內的,也就是說在if語句內進行返回,在這個方法內卻沒有返回值,我把代碼修改了一下,使得在這個方法內進行返回,詳看下面的方法圖。
    技術分享圖片

代碼托管

技術分享圖片

上周考試錯題總結

  • 錯題1: The idea that program instructions execute in order (linearly) unless otherwise specified through a conditional statement is known as
    A . boolean execution
    B . conditional statements
    C . try and catch
    D . sequentiality
    E . flow of control
  • 解析 “控制流程”描述了指令執行的順序。 它默認為線性(或順序),但通過使用控制語句(如條件和循環)進行更改。
  • 原因:這道題完全就是粗心了,如果認真一點耐著性子好好地把英語讀一遍是可以做對的。
  • 錯題2: If a break occurs within the innermost loop of a nested loop that is three levels deep
    A . when the break is encountered just the innermost loop is "broken"
    B . when the break is encountered, all loops are "broken" and execution continues from after the while statement (in our example)
    C . when the break is encountered, all but the outermost loops are broken, and execution continues from the next iteration of the while loop (in our example)
    D . this is a syntax error unless there are break or continue statements at each loop level
    E . none of the above
  • 解析 最內層的循環(在我們的例子中為for循環)被破壞,執行從for循環結束後繼續執行。
  • 原因:這道題應該是屬於我的英語問題了...沒有很好的理解這道題的意思,還是應該好好的提升下自己的英語水平...
  • 錯題3: In order to compare int, float and double variables, you can use <, >, ==, !=, <=, >=, but to compare char and String variables, you must use compareTo( ), equals( ) and equalsIgnoreCase( ).
    A . true
    B . false
  • 解析 您也可以使用<,>,==,!=,<=,> =直接比較char變量,但對於任何字符串比較,必須使用compareTo(),equals()和equalsIgnoreCase()。
  • 原因:這道題確實不是特別清楚,要好好的識記一下。
  • 錯題4: You might choose to use a switch statement instead of nested if-else statements if
    A . the variable being tested might equal one of several hundred int values
    B . the variable being tested might equal one of only a few int values
    C . there are two or more int variables being tested, each of which could be one of several hundred values
    D . there are two or more int variables being tested, each of which could be one of only a few values
    E . none of the above, you would never choose to use a switch statement in place of nested if-else statements under any circumstance
  • 解析 switch語句只能在被測試的單個變量使用時使用,並且它是一個整型(int或Java中的char)。 此外,因為您必須枚舉每個可能的測試值,所以switch語句只有在被測試值的數量很小時才有意義。
  • 原因:這道題也是由於自己的疏忽,沒有認真的讀題導致了錯誤。
  • 錯題5: If a switch statement is written that contains no break statements whatsoever,
    A . this is a syntax error and an appropriate error message will be generated
    B . each of the case clauses will be executed every time the switch statement is encountered
    C . this is equivalent to having the switch statement always take the default clause, if one is present
    D . this is not an error, but nothing within the switch statement ever will be executed
    E . none of the above
  • 解析 雖然寫這樣一個轉換語句是不尋常的,但它是完全合法的。 開關語句執行的正常規則適用於在計算開關表達式後執行的匹配的case子句。 之後,依次執行所有後續子句,因為沒有終止開關/大小寫執行的中斷語句。
  • 原因:概念的理解不清。
  • 錯題6: A continue statement
    A . may be used within a while or a do-while loop, but not a for loop
    B . is identical to a break statement within Java loops
    C . may be used within any Java loop statement
    D . may be used within a for loop, but not within a while or a do-while loop
    E . none of the above
  • 解析 盡管應該避免使用continue語句,但是如果可能的話,它們可以在Java的三個循環中使用:for,while和do-while。
  • 原因:書本上的概念理解不清。
  • 錯題7: Given that s is a String, what does the following loop do?
    for (int j = s.length( ); j > 0; j--)
    System.out.print(s.charAt(j-1));
    A . it prints s out backwards
    B . it prints s out forwards
    C . it prints s out backwards after skipping the last character
    D . it prints s out backwards but does not print the 0th character
    E . it yields a run-time error because there is no character at s.charAt(j-1) for j = 0
  • 解析 變量j從字符串的長度向下計數到1,每次在位置j-1打印出字符。 長度為1的字符是打印的第一個字符,這是字符串的最後一個字符。 它會一直持續到j = 1,並在位置j - 1或第0個字符處打印字符,以便向後打印整個字符串。
  • 原因:對題意的理解有問題。
  • 錯題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
    解析 確實,循環可以是無限循環,但Java for循環也可以是無限循環。 在許多其他編程語言中,這種情況並非如此,其中for循環具有設置的起點和終點,但Java for-loops比大多數其他語言的for-loops靈活得多。

結對及互評

:

點評模板:

  • 博客中值得學習的或問題:
    • xxx
    • xxx
    • ...
  • 代碼中值得學習的或問題:
    • xxx
    • xxx
    • ...
  • 基於評分標準,我給本博客打分:XX分。得分情況如下:xxx

點評過的同學博客和代碼

  • 本周結對學習情況
    • 結對同學學號1
    • 結對照片
    • 結對學習內容
      • XXXX
      • XXXX
      • ...
  • 上周博客互評情況
    • 學號1
    • 學號2
    • 學號3
    • 學號4
    • ...

其他(感悟、思考等,可選)

這周的學習任務還是比較的重的,也增加了許多新的具有一定難度的內容,此外,在編寫代碼的過程中,我同樣也發現了自己的一些問題,粗心大意的毛病還是沒有改掉,也因此耽誤了不少學習的進度。還是希望在以後的學習生活中得以改進和避免。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 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
第六周 906/4298 1/6 20/107
  • 計劃學習時間:20小時

  • 實際學習時間:20小時

  • 改進情況:以後還是要更加努力地敲代碼才行!!!

參考資料

  • 《Java程序設計與數據結構教程(第二版)》

20172313 2017-2018-2 《程序設計與數據結構》第六周學習總結