1. 程式人生 > 其它 >SpringCloud學習筆記(一)搭建父工程

SpringCloud學習筆記(一)搭建父工程

一.對Java的看法

這一學期剛接觸Java課程,假期時間就聽說這學期要學,但是自制力有點差,想著假期去了解一下Java卻沒有實現。學習了一個月了感覺Java和C語言有很多共同之處,學起來相對不是很吃力(有了C語言的基礎)。

Java有類的概念,剛開始學最難理解的就是對類的呼叫以及public、private和static的用法

還有以前沒有用過的Boolean資料型別,輸入輸出也和C語言有很大差別,

發現if/else、switch、while、for等語句都可以使用時對Java又產生了信心

像輸入輸出格式要求、一維陣列定義都需要重新學習,但我發現書上什麼都有,定義型別和函式運用這方面書上介紹的特別詳細,這本書對初學者幫助巨大

二.對三次pta作業進行分析

1.三次作業中遇到的BUG

顯示沒有Main的外層例項,其實是把類放到了主函式裡面

經常把printf寫在輸出上," "格式也經常打錯

不能定義靜態初始化

函式使用的返回值Boolean只能返回true和false

2.知識點、題量、難易度

知識點:

第一次pta主要是為了讓我們熟悉Java的框架和構造,瞭解輸入輸出的格式、for和switch在java中的運用,一維陣列的定義等...

第二次最明顯的就是相對複雜了很多,像日曆這種題不但要考慮閏年還要考慮月份天數,下一天要考慮是否為本月的最後一天,考察我們的全面性和對函式的應用以及查詢問題和改正的能力

第三次pta就上升到了類的使用,要求建立一個類用來儲存資料,這就需要了解類的建立和呼叫,還學到了一個新的資料型別LocalData

題量和難易度:

題的數量依次減少,但要寫的內容都是相對增加,難易度逐漸上升,第三次的最後一題就沒有做出來。

3.題目集1.7-8判斷三角形類型別

這個題目很簡單,就是對三角形的一個分類,a、b、c三個邊可以將所有情況都表述出來,用到if/else if/else方法,題目給出的輸出格式的順序是最簡便的,如先判斷是否為等腰直角三角形在判斷是否為等腰三角形和直角三角形。如果是等腰直角三角形直接輸出等腰直角三角形,就不會再輸出這個三角形是等腰三角形和直角三角形。

首先是要判斷輸入問題,三角形要求三個邊要是實數且屬於(1,200),所以輸入字母等就是非法輸入,我建立了一個數組,存放三個邊,然後用一個if語句用來判斷三遍是否符合if(a[i] < 1 || a[i] > 200),然後就是具體型別具體分析,分別給出三邊條件,符合就輸出三角形的型別。

題目集2,7-4、7-5

這兩個題目結構幾乎一樣,7-4是輸出輸入日期的下一天,而7-5是輸出輸入日期的前N天,想要確定日期的下一天和前N天,就要分普通情況和特殊情況,先說下一天:正常情況下一天直接day+1輸出即可、特殊情況:第一種是月末,月末又分為三種,2月、30天、31天,所以需要一個if或者switch語句來具體分析,如果屬於月末就month+1,day=1,這時候第二種問題就來了,如果是年末呢,month+1=13,那就不符合了,所以又要分month=12和month!=12兩類。

前N天也很相似,需要反向思考,分為前N天在上一個月和在本月,在本月直接減法就可以,在上一個月就要分析上一個月有多少天了,因為是倒著來的,所以要知道上一個月最後一天是幾號,這種時候就要對month-1進行分類了,分四類。30天的、31天的、2月(分兩類閏年和非閏年)、1月、一月就要回到上一年了,要仔細考慮。

做題時建立了兩個函式,第一個是boolean isLeapYear,判斷是否為閏年(用於判斷2月的天數),返回值為boolean型別,如果是閏年就返回true,否則返回false。二是一個對輸入條件的判斷boolean checkInputValidity,例如2019年2月29號為輸入錯誤,主要判斷年份是否在符合範圍,每一個月的天數是否超過。

題目集3,7-2定義日期類

這個題目新建了一個類Data用來存放year,month,day資料,我在Data類裡創了一個一維陣列用來存放每月的天數,由於閏年和不是閏年二月天數會發生變化就可以根據isLeapYear傳回來的資料來改a[2]的值。其他方法都和上一題基本相同。

7-3 一元多項式求導

一元多項式求導,這道題有點複雜,當時沒有做出來,參考了一下網上一些資料,建立一個DvForString()類,將一元多項式分類進行分析,如全是常數項、x只有係數、x只有指數、x指數和係數都有、還有每一項前面的符號。

number:表示全是常數項時的特判

specialnum:帶x項,允許係數中間內有空格,有不為0的係數和指數

regex:x只有指數

regex2:x前面係數,指數都沒有

concat:數字和帶x項或在一起構成多項式中的一項

concatend:多項式表示式 ,首項可以無+,-, 後續項必須有

end:Polynthic 多項式

public DvForString()有參構造,可以直接通過字串陣列名賦值另一個相同大小和型別的陣列public DvForString(String polynthic)對私有變數獲取和,賦值的方法

public void setPolynthic(String polynthic)合法性檢驗

private boolean isLegal() 全常數檢驗

public void printEveryElement()打印合法輸入中每一項

public void print() 列印

private void printNotLegal() 打印合法輸出

private void printLegal()拷貝一份給字串s

對每一種情況進行分析,將它們分別放入函式裡,當檢測到多項式是,將他們傳到相對應的函式裡面進行求導,最後再將它們拼接起來實現一元多項式的求導。

三、踩坑心得

當對輸出有要求如保留幾位小數時輸出才會用到printf,由於寫C語言寫習慣了,經常會下意識地寫printf導致出錯

定義類時千萬別寫在Main裡面,以前看不懂錯誤提示常犯

呼叫定義的類要先new一個新物件,除非有static時可以直接呼叫類裡面的函式

輸出時不只是要注意輸出格式,還要注意自己是否打錯字母和大小寫,如wrong打成wring導致我改了半天都沒有找到出錯原因(本人英語有點low)

輸入字串是next.Line(),自己經常寫next.String();會直接報錯然後立馬改正

建立陣列既可以int[] a = new int[n](書上的格式),也可以int a[] = new int[n];

多思考,像我剛學java,本來啥也不會,不能想著去看別人的程式碼,因為看到了別人的程式碼,你的思路就受到了限制,你會不自覺地去想別人的程式碼靠近,自己看看書多瞭解瞭解,最後實在寫不出來,問一下寫出來的人思路,然後再自己寫。雖然自己寫出來的程式碼可能更復雜,但是有了自己的思路就可以了,再根據別人的進行改進刪減和完善。

四、改進建議

像第二次題目集我的每月天數相加都是寫的一連串,再加上分情況討論,我的程式碼不復雜但特別長,在網上看了一下別人的思路,發現他們用了一個一維陣列,將每個月的天數都存了起來這樣加起來特別方便,不用每次都去寫一串數字。

Account類剛寫時看到了一個新型別LocalData,就在網上特地查了一下,是一個輸出此時此刻的日期的一個函式,還特地擴充套件了一下,比如說怎麼輸出當天此時此刻的時間等等

對儲存結構還是有點模糊,上課老師讓畫圖也不怎麼會畫,課下應該多瞭解一下相關知識

好多東西都寫在了主函式裡面,這個課程是面向物件,我們應該建立起這樣的思維構造,能簡便易懂和結構明瞭就多建一些函式,把每個功能都分開寫,至少直觀上能達至讓別人一眼看出你想表達什麼。

五、總結

Java課程也開始了一個多月了,對Java也有了一個大致的瞭解,從什麼都不懂,到老師上課出題能快速進入狀態思考方法並自己去完成是一個很大的進步,從剛開始的學習輸入輸出,怎麼定義整型,浮點、字元、字串、一維陣列、構建函式、構建類、呼叫系統函式,也逐漸有了自己的做題思路,雖不完善,但也逐漸改進,多去了解學習,尤其課下一定要將上課沒有及時寫出來的問題完善,書本極為重要,內容全面,課下有時間就應該看看書上的內容例子,課下不預習的話上課也會有障礙,畢竟自己是初學者,基礎本就沒有別人好,再不努力拿什麼趕超他人。