20172305 2017-2018-2 《程序設計與數據結構》第三週學習總結
教材學習內容總結
本週內容主要爲書的3.1-3.8的內容:
1.String類、Random類、Math類、兩種格式化輸出NumberFormat類和DecimalFormat類、枚舉型以及包裝器類
2.Java API標準類庫
3.import聲明簡化類的引用
4.對象變量保存的是該對象的地址php
教材學習中的問題和解決過程
- 問題1:對於Random類中輸出隨機數的取值範圍
- 問題1解決方案:選取的範圍一般爲左閉右開,並且左區間的值爲0或者0.0,而整型的右側通常爲取到的最大值的減1,而浮點型的右側爲1,只能輸出(0.0,1.0)之間的範圍,若是是取其餘的範圍,只能經過乘法的擴大倍數或者是加減移動範圍。
- 問題2: Math類的正餘弦值的運算
- 問題2解決方案:對於書上所說的「static double cos(double angle)」中的angle是弧度值,而我在進行PP3_8的實驗作出來的隨機數的正餘弦,與我手機計算器運算的數有很大差異,並且整個程序沒有問題。耗時半天進行解決,反覆調試,才發現本身的代碼執行的是弧度值,手機執行的是角度值,針對角度值的運算只能經過弧度制與角度值的換算公式1=180度/π進行運算。
- 問題3:Math中的各類方法
- 問題3的解決辦法:Math.PI爲圓的周長與直徑之比,即爲π,無限不循環小數,比本身用3.14要精確多了,Math.log是運算對數函數的,JDK API對於本身查詢方法有很大的的幫助。
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
代碼調試中的問題和解決過程
- 問題1:格式化輸出中NumberFormat類和DecimalFormat類
問題1解決方案:(1)針對NumberFormat類的例題3.4書中的輸出是美圓符而不是人民幣的符號,而本身輸出的是人民幣符號,這個是如何區分本地的問題,頗有意思。我認應該是當初設置系統的時候選擇了上海的地區,因此分爲了人民幣。
(2)針對DecimalFormat類的「#」和「0」的區別,試了好幾回,而且每次運用的「#」和「0」的長度也不一樣,其中「#」的做用表示該位無數字則自動省略,「0」表示該位無數字則補零。兩種都要進行四捨五入,進行保留。並且書中的例題頗有意思,其中的「The circle's area:78.5398」在格式化爲「0.####」若是爲「0.###」的時候,8進位,9變10結果應該爲78.530,但因爲「#」的做用使得末尾的0去掉了。
c++
- 問題2:對於import聲明類的過程,對於多種類的聲明方法
- 問題2解決方案:針對同種包中的類能夠用「*」所有代替。
- 問題3:char類型與String類型的轉換
問題3解決方案:char和String的區別:git
(1)類型不一樣,char是字符類型, String是字符串類型(2)String字符串是用""來包含串的, char是用''來包含單字符的(3)String內部用來存儲的結果是一個char字符數組。
我所敲的代碼忽略了字符與字符串的問題,因此出現問題提示,用強制轉換的方式能夠解決,String s = String.valueOf('c')。
web
![](http://static.javashuo.com/static/loading.gif)
上週考試錯題總結
- 錯題1What value will z have if we execute the following assignment statement? float z = 5 / 10; (若是咱們執行下面的賦值語句,獲得的z將會是什麼值?)z will equal 0.0 (z將等於0.0)
- 錯誤分析: 這道題徹底就是選錯選項形成的,兩個整型數作除法仍爲整型數,在由該整型數變爲浮點數。
- 錯題2.Which of the following is true regarding the mod operator, %? (關於求餘運算符%,下面哪項是正確的?)It can be performed on any numeric values, and the result always is numeric (它能夠執行任何類型的數值,其結果始終是數值)
- 錯誤分析: 作此題以前,一直認爲求餘運算只能是整型的,經過此題認識到執行任何類型的數值都是能夠的。這道題算是本身學習缺陷的彌補,下次看書的時候會更認真。
- 錯題3. What is output with the statement System.out.println(x+y); if x and y are int values where x=10 and y=5? (若是x和y是int類型的數值,x=10,y=5,那麼語句System.out.println(x+y);的輸出是什麼?)15
- 錯誤分析: 混淆字符串和數字的區別了,對於兩側加雙引號狀態下數字成爲字符串,在未加狀態下,括號將「+」運算符與兩個數值操做對象組織在一塊兒,則首先進行加法運算的,而後在輸出。
- 錯題4. If you want to store into the String name the value "George Bush", you would do which statement? (若是你想把"George Bush"這個值存儲爲字符串類型的名字,你會執行那條語句?)
String name = "George Bush";
String name = new String("George Bush");
String name = "George" + " " + "Bush";
String name = new String("George" + " " + "Bush");
- 錯誤分析: 有兩種方法能夠將字符串存儲爲字符串變量,經過使用「new string (string value)」構造一個新字符串,或者使用賦值語句。所以前兩個是對的,然後兩個用上使用了字符串鏈接操做符「+」也是對的。該題一直不肯定選哪一個,是因爲本身沒有提早看書形成的,所以好好看書成爲重中之重,並且要肯定好每一個選項,不能由於一個「E」選項影響。
- 錯題5. Java is a strongly typed language. What is meant by "strongly typed"? (Java是一種強類型語言。「強類型」指的是什麼?)Every variable has a single type associated with it throughout its existence in the program, and the variable can only store values of that type (在程序中,每一個變量都有一個與之關聯的類型,而變量只能存儲該類型的值)
- 錯誤分析: 變量是本身定義類型的,但變量的存在期間,變量的類型不會發生變化,而存儲在該變量中的任何值都屬於該類型。強大的輸入是重要的,由於它保證了一個成功編譯的程序不會出現與被聲明的變量的錯誤類型相關聯的運行時錯誤。
- 錯題6.A double is wider than a float and a float is wider than an int. (一個double類型的數比float類型的數更寬泛,一個float類型的數比一個int類型的數更寬泛。)true
- 錯誤分析:double是64位,而float是32位,而float,由於它的存儲方式是浮點型的,能夠存儲比int更大的值範圍。後半部分的內容是本身在作題是忘記考慮,選錯的。同位存儲類型的整型和浮點型,浮點型的存儲比整型的存儲大。
- 錯題7.A variable of type boolean will store either a 0 or a 1. (Boolean類型的變量將被存儲爲0或1)false
- 錯誤分析: 布爾變量只能存儲兩個值中的一個,但這些值是保留字true和false。在C語言中,c++和c#布爾值被實現爲只存儲0或1的int變量,可是在Java中,語言的做者選擇了真實和錯誤的布爾文字,由於這被認爲是語義上更容易理解的(並且更安全)。因爲上學期老師說過黑白圖片的存儲是由0和1的形式存儲的,就選錯了,實際上那種是C語言的存儲方式,而本題說的是JAVA語言。
- 錯題8.Consider the following statement:
System.out.println("1 big bad wolf\t8 the 3 little pigs\n4 dinner\r2night");
This statement will output ________ lines of text (思考下面的語句,該語句將輸出___行文本)2
- 錯題分析: \t轉義序列插入一個選項卡,但將光標放在同一行。\n的轉義序列致使產生一個新行,以便「4晚餐」在下一行輸出。轉義序列\r使回車返回(也就是說,光標移回到左邊緣),可是由於它沒有開始新的行,「2night」輸出超過「4 dinn」,致使第二行看起來像「2nighter」。
本週的錯題相對簡單,總結起來本身的成績爲什麼這麼低,緣由在於本身沒有好好看書,沒有細緻的看書上的重點句子形成的,同時本身學習進度也要提早,才能防止本次錯題中的失誤。在看書的同時也要多在網頁上進行相關知識的查找才能極大的拓寬咱們的視野。
感悟
本週在虛擬機上的敲代碼變得順利許多,無非就是本身的代碼有問題之類的錯誤出現,沒有之前的那些稀奇古怪的問題出現。但,本週運行的Idea卻是遇到了很多麻煩,幸得老師、學長和同窗的幫助,才得以解決。像什麼與碼雲的鏈接問題,在Idea上把文件傳到碼雲上,還有更爲無奈的是這個好像只有一個月的試用期,只能模仿同窗,在淘寶上開了個賬號進行應用。還有本週一遇到了~~毀天滅地~~的大事,就是虛擬機在軟件更新過程當中的失敗,形成虛擬機的壞掉圖形界面顯示不出來,一直處於無程序的界面(還不如直接黑屏來的乾脆,看着本身好不容易弄出來的虛擬機就是不運行,真想把電腦砸了)值能求助老師,在老師的幫助下,開始恢復圖形界面。可是,很不幸的是本身把語言模式設置成漢語,形成大部分的內容顯示不出來,用一個個的菱形替代,徹底不知菱形背後的是什麼。快氣炸了,無法解決只能本身從新安裝了,好在本身還有安裝步驟,花費了一節公選課的時間,從新裝完vmwaretools、gdk、vim、tree等東西,將近一個半小時的是間就搞定了,應了那個成語「熟能生巧」(爲本身的錯誤買單)若是有下次的話,我相信指定會比此次安裝的更順利。
學習進度條
目標 |
5000行 |
30篇 |
400小時 |
|
第一週 |
136/200 |
1/2 |
15/20 |
|
第二週 |
570/500 |
1/4 |
20/38 |
|
第三週 |
613 /1000 |
1/7 |
23/60 |
習慣了,也就不感受敲代碼很累了。 |
參考資料