第二次Blog

HTzero發表於2024-06-09

真是轉瞬即逝啊,轉眼間就已經又做了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次題目集一樣全力以赴
希望告誡自己:沒有什麼絕對的難題,只有絕對懦弱的自己,不能退縮,越不行才越要上。