1. 程式人生 > 其它 >Java第一階段學習總結

Java第一階段學習總結

一前言:

  本次部落格內容主要是本人作為Java初學者,在前三週接觸面向物件程式設計的總結。本次總結以分析PTA前三次作業為主。由於本人在程式設計上基礎薄弱,並在第三週時因為一些個人原因並沒有解決第三週PTA上的作業,所以本次重心偏向於前兩次作業的分析。

  在PTA的第一次作業中,我們可以在一個Main類的主方法中完成題目要求,更多的是考察個人一些程式設計基礎,只要掌握一些基礎的Java語法就可以進行程式設計,只要能清楚理解到題目的要求就能編出來。而在第二次作業中除了一個主類還要考慮到同一個目標有2個以上的方法來解決題目中的其他功能。第三次的作業要求類的設計,為了更好地解決問題,我們需要設計各種類

,每個類裡面還會有它們各自的屬性和方法,然後在Main類中呼叫其他的類,利用其他類去呼叫其中的屬性和方法,從而實現解決題目所需要的功能。從單類主方法到多類多方法,這裡面需要學習的東西很多,在短短三週時間,從無到有,時間非常緊張,除了要學習一下Java的語法,還要試著去接受面向物件的理念。

二設計與分析:

  第一次作業:判斷三角形型別。

  分析過程:首先,初步確定題目要求。按照題目要求,我們需要輸入一個三角形的三條邊長,三條邊長都為實數型,取值範圍為【1,200】,根據輸入的資料判斷這個三條邊長是否可以構成一個三角形。如果可以形成一個三角形,那我們就要判斷這個三角形是一個什麼型別的三角形。按照我們的基本認知和題目要求,可以分為:輸入合法且三邊相等則為等邊三角形,這時輸出“Equilateral triangle”;輸入合法且在有兩條邊相等的同時還基本兩條相等的邊的平方和減去第三條邊的平方小於0.00001的條件則為等腰直角三角形,這時輸出“Isosceles right-angled triangle”;輸入合法且有兩條邊相等則為等腰三角形,這時輸出“Isosceles triangle”;輸入合法且存在有兩條邊的平方和小於第三條邊的平方的情況則為直角三角形,這時輸出“Right-angled triangle“;輸入合法但不屬於以上任意一種的情況則為一般三角形,這時輸出“General triangle”。根據以上的基本要求,初步選擇使用if--else語句來實現題目要求,完成編譯過程。

  主要程式碼如下:

  第二次作業:求前N天

  分析過程:首先是輸入要求:在一行中輸入年月日的值以及n的值,可以用一個或多個空格或回車分隔。在這裡,輸入的年月日的值都為整型數,年份的取值範圍為【1820,2020】,月份的取值範圍為【1,12】,日期的取值範圍為【1.31】,n是輸入取值為【-10,10】的整型數,最後當n大於0時輸出該日期的前n天,當n小於0時輸出該日期的後n天。接下來就是按照常識,年份有平年閏年之分,月份有大小之分,因此我們需要一個能判斷是否為閏年的類,如果是閏年則二月的天數要在原來28天的基礎上再加一天。為了更好的解決月份的大小之分,直接建立一個一維陣列,陣列中存上每個月有多少天。在建立了基礎的日期輸入之後,便要解決求前n天的要求。這裡需要解決的問題有點多,如果輸入的日期數小於n的值,則需要將月份值減一,若此時月份值為一則將年份值減一且月份值為十二。同樣的,如果我們要求這個日期的後n天,則需要判斷日期數加n後是否大於月份值所對應的日期陣列的值,若大則月份值加一,若月份值為十二則將年份值加一併且月份值為一。最後輸出題目所需的最終答案。

  主要程式碼如下:

判斷是否為閏年:

求前n天:

  第三次作業:定義日期類;一元多項式求導類

  由於並未完整做出第三次作業,所以並不好具體分析。

三踩坑心得:

  嚴格的來講,這幾次作業並沒有什麼算是踩坑的經歷,更多的還是自己對Java程式語言的不熟悉和自身能力的缺陷導致自己並沒有很好的完成作業。就個人而言,這並不能算是不好的經歷,相反這也更加提醒自己要多花功夫好好學。不單單是熟悉掌握Java語言的語法,更重要是理解並掌握面向物件程式設計的思想,可以解決作業中的問題。就以往的解題經歷來看,本人解決問題最大的難點不在於分析問題的需求,更大的難點在於如何將自己腦海中的分析轉換成Java語句,能讓程式不報錯,不出錯的實現出來。總的來說,還是動手打程式碼的時間太少,編譯程式碼時思路不夠清晰,不能完美貼合程式語言的習慣。

四改進建議:

  這樣的程式碼於我,已經是傾盡全力,如果要改進的話,只能從改變思路下手。但思想受限,實在是沒有更好的改進建議了。

五總結:

  作為Java的初學者,每學一點就算是學到了一點,同樣的需要學習的東西就很多很多。因為自己會的很少並且學習時間比較緊張,所以要一下子去懂老師講的是什麼就很難,更重要是不理解。每個人的基礎不同,接收能力也不同,所以個人已經做好了自己努力的準備,先學好自己還沒學會的,再多看看別人的程式碼並培養到自己的意識,希望後續可以理解老師講的東西,能學到什麼程度便學到什麼程度,更重要的是希望自己可以順利通過該門課程。