真是轉瞬即逝啊,轉眼間就已經又做了3次作業,
按照慣例,我們還是得來“溫故而知新”一下本次的4~6次的題目集。
這次雖然也沒有一次滿分,但是我不會覺得是件壞事,並不是因為麻木了,而是我覺得我至少努力過,
像第4次,第5次,都是差1,2分,我都是堅持到了最後才得的分數,那我也沒理由說嫌棄,只不過得不斷勉勵自己,希望下次的自己能做的更好。
到了現在,也做了6次作業,在這第4-6次的作業裡,我能很明顯的感受到自己不再是像C語言那樣只是單純看到題目,拿到手直接唰唰寫答案就行
了,java與C語言有著巨大的不同,這個不同就是在Java中,多了一個類的概念,也讓我們才真正感受到了在未來做軟體時,對各個物件的關係之
間的把握是十分重要的。在這4~6次的作業裡,尤其是第6次作業與第4次作業讓我開始養成了做題對物件的關係的辨析的習慣,接下來我就開始一
一介紹這3次作業:
第4次題目集:
第四次題目集其他兩題沒什麼講,就是來考察基本的能力的題目;
第一題:
知識點:
1. 這裡我最想講的就是多型與繼承的好處,如圖:
在本次的作業中題目的型別多了兩個型別,一個是填空題,一個是多選題,但是,我們考慮到我們不可能把他們三種題目分開,一個一個處理,一個
一個判斷,在工程與時間上都是極大的開銷,所以,這時我們就恰巧可以利用多型性與繼承的關係,用三種題目的父類列表來共同存入所有的題目ArrayList<Topic> topics = new ArrayList<>();
,而不用分開儲存
上程式碼:
點選檢視程式碼
class Topic {//父類
int num;//題號
String question;//題目
public Topic(int num, String question) {
this.num = num;
this.question = question;
}
}
class KTopic extends Topic{//填空題
String answer;
public KTopic(int num, String question, String answer) {
super(num, question);
this.answer = answer;
}
}
class ZTopic extends Topic{//選擇題
//多答案
String[] answers;//多答案
public ZTopic(int num, String question, String[] answers) {
super(num, question);
this.answers = answers;
}
}
class NTopic extends Topic{//普通題
String answers;
public NTopic(int num, String question, String answers) {
super(num, question);
this.answers = answers;
}
}
本次題量也不會很多,況且是在上次的作業的基礎上來做的,所以題量也適中
難度:我覺得比前幾次而言要簡單點,嘛,說直接點就是這次的透過點不會那麼的***鑽了
最後也只是一個格式原因沒有滿分,但是因為學業不是僅僅是Java組成的,花太多時間在一個這個問題上的時間成本太
高了,所以,雖然很不甘心,但是,希望下次能盡力一次性到位。
第5次題目集:
我們先從簡單題講起,
第3題:
知識點:
這裡考察了我們對列表的熟悉程度,與使用程度,並且還考察了迭代器
透過迭代器遍歷列表,首先得先定義與建立迭代器的例項物件:Iterator it = c.iterator();
然後有效的利用Iterator的
方法:hasNext()
;來判斷是否列表中還有元素next()
;來獲取列表中的元素,利用迭代器遍歷,對於我們熟知的hashMap
與ArrayList
來說雖然可能意義不大,但是當列表的實際物件為LinkList
時,則可以大大減少遍歷的時間,從而彌補LinkList
遍歷上的缺陷。
第1題:
總體而言就是搭建軌道,讓電路及其裡面有的電器使用起來,同樣,在這裡,因為有
三種的開關與三種的電器,所以我們首先應該想到的就是類與類之間繼承的關係,
我讓電器與開關分別繼承同一個基類,在電器與開關共同有相同點的同時,電器又有屬於自己的不同點,所以,電器類又繼承另一個類,作圖而言就是這樣:
這樣先理清類與類之間的關係才是在java中最為重要,也是必要的一課,至於在這裡用到的正規表示式呀,之類的我們就不在多說,也是到現在理應學會的東西了
這一題雖然在第一次做的時候缺了點不足
不過也在補練中重新的做滿的這道題,也算是了了心願吧。
難度:也是一般,但是第一次沒做滿的我而言也沒有權力評價,不過從第二次能做滿的情況來看,也是中規中矩的題目了吧。
第6次題目集:
題目:
本次的題目值得一提的是,本次的題目對於電路也要一定的熟悉才行,因為要算電阻,電壓等等,
資料上也是加了個串聯與並聯的電路,和電阻資料成員,
所以在這題,得熟練的運用電路中的電流的特性,我將一個電器的輸出引腳與下一個的電器的輸入引腳繫結在一起,這樣,就能巧妙的將一個電器的電壓匯入另一個電器當中。
在串聯與並聯電路,還得注意這兩傢伙的電壓關係,該如何分配等,都是我們需要考慮的問題;
上程式碼:
點選檢視程式碼
public void fenya() {
double v = p1.Pins - p2.Pins;
if (!this.OF()) {
this.p2.Pins = 0;
}
if (this.Switchs.size() <= 0) {
this.p2.Pins = p1.Pins;
return;
}
for (int i = 0; i < Switchs.size(); i++) {
if (!Switchs.get(i).OF()) {
if (Switchs.get(i) instanceof CConnection) {
((CConnection) Switchs.get(i)).ChangeP1(new Pins(0));
((CConnection) Switchs.get(i)).ChangeP2(new Pins(0));
} else {
Switchs.get(i).p1 = new Pins(0);
Switchs.get(i).p2 = new Pins(0);
}
}
if (Switchs.get(i).OF()) {// 說明是閉電路
Switchs.get(i).SetP2(Switchs.get(i).p1.Pins - v);
if (Switchs.get(i) instanceof CConnection) {
((CConnection) Switchs.get(i)).fenya();
continue;
}
if (Switchs.get(i) instanceof PConnection) {
((PConnection) Switchs.get(i)).fenya();
continue;
}
if (this.Switchs.get(i) instanceof K) {
((K) Switchs.get(i)).C();
}
if (this.Switchs.get(i) instanceof L) {
((L) Switchs.get(i)).change();
}
if (this.Switchs.get(i) instanceof F) {
((F) Switchs.get(i)).change();
}
if (this.Switchs.get(i) instanceof Fan) {
((Fan) Switchs.get(i)).Setspeed();
}
if (this.Switchs.get(i) instanceof B) {
((B) Switchs.get(i)).SetLigt();
}
if (this.Switchs.get(i) instanceof R) {
((R) Switchs.get(i)).SetLigt();
}
if (this.Switchs.get(i) instanceof A) {
((A) Switchs.get(i)).Setspeed();
}
}
}
}
難度:難度上來講,就是電路本身的電器之間的關聯,以及引腳之間,電壓之間的分配很難想,需要大量構思,與猜測
關於第六次題目,我真的很想分享自己的經歷,
我本來是試了幾遍,還是82,本來是想放棄的我,看到室友們,相互吹自己過了,靠著別人給的提示過的,
我就氣不打一處來,然後就是第二天早早跑到教室,在那想,我想了一早上2小時,過了3分,中午也沒睡覺,
一箇中午3個小時又過了9分,最後儘管沒有滿分,但是沒有依靠其他人,自己做的結果還是可以勉強接受,
畢竟我也不是個天才,有的時候不會,可能下次再遇到的時候,我就能輕鬆搞定了。
總結
雖然不能比前面的人優秀,但是希望以後的題目自己也能像這次第6次題目集一樣全力以赴
希望告誡自己:沒有什麼絕對的難題,只有絕對懦弱的自己,不能退縮,越不行才越要上。