文章

java修課心得-期末考

所以我說那個女裝呢

java修課心得-期末考

前言

2025-07-17更新:新增筆記圖片

在考試的前幾週,收到了一封老師發給所有人的信。
裡面提到:「近期有多位同學反映,由於不正當的考古題洩漏的影響,原本的評分方式可能存在不公平的情況。」
沒想到上了大學還能遇到這麼有趣的事

總之老師調整了評分方式,把期中的10%搬給期末的10%。
不過原本的計分方式依然保留,看同學用哪種計分方式分數比較高就用哪一個。


對我影響不大甚至可以說是賺到了。
但是有一個小問題:老師會不會因此把期末難度調高很多?
這就讓人有點緊張了,因為我對java其實沒有很熟。
方法、介面、抽象什麼什麼的,光他們的名字就已經夠抽象了。實在是有點搞不懂啊……

不能翻之前的code,只能帶紙本筆記跟老師上課給的簡報(還有在上面做的筆記),也不能開瀏覽器。
看來,只能使用那一招了嗎……

事前準備

好巧不巧,那個時候我好像把多的空白本子都帶回家了,也沒有多的白紙可以用。
但是書櫃上放了一本之前室友送給我的A5活頁筆記本。
那麼就決定是你了!

把他拿下來,想了一下我需要什麼東西。
基本的寫法基本上都OK,因為跟c++有點像(應該吧)
所以先把一些需要import的函式庫,還有一些固定的寫法記下來。
像是import java.util.Scanner;還有import java.util.ArrayList之類的,這麼長誰記得完。

接下來寫的東西,就是一些我不太會的東西,像是遞迴之類的,這樣我就可以在考試的時候手動貼上了(

考試ㄌ

總共有三題,三個小時。
一題一小時,應該還OK吧。

第二題

原本看著第一題,覺得有點完蛋,這該不會要用數學硬爆吧?
腦袋中開始閃過各種以前學習過的數學,什麼排列組合C4取3之乎者也之類的。
看了幾下覺得,我還是先跳過好了。


就這樣我抵達了第二題,非常的簡單愜意。
就是二元搜,只是要用遞迴。
但問題不大,因為我已經事先準備好了遞迴版的二元搜了。啊哈哈哈哈:)

1
2
3
4
5
6
7
8
9
10
11
public static int binarySearch(int[] arr, int target, int left, int right){
    if(left>right)
        return -1; //未找到
    int mid=left+(right-left)/2;
    if(arr[mid]==target)
        return mid;
    else if(target<arr[mid])
        return binarySearch(arr, target, left, mid-1);
    else
        return binarySearch(arr, target, mid+1, right);
}

再來需要輸出這個數字在的位置,還有顯示他的位置是奇數位還是偶數位。
這些問題只需要用print去輸出好看好看的輸出,還有用if去%一下就知道是奇數還是偶數了。

第三題

第三題感覺就是很基本的我不會的java部分,所以我得想辦法想出該怎麼做。
他有提供程式碼架構,規定抽象類別要有什麼屬性、方法;介面要有什麼方法。
然後子類別要繼承上面的副類別,類別裡面要完成的函式等等。

因為寫的方式都被規定了,讓這個變得有點像填空題。
相較於單純解題,我覺得又有了其他困難。

因為就是填空,會使用這些傢伙就OK了。

第一題

解決了下面兩題,再度回到第一題。
其實原本看著上面的範例輸出,就覺得好像有點眼熟。

1
2
3
4
input:4, output:5
input:5, output:8
input:7, output:21
input:20, output:10946

5, 8, 21
看起來有一點點費式數列的感覺,1, 1, 2, 3, 5, 8, 13, 21,只是中間剛好跳過了13。
那麼再試試看20會出來的是不是10946吧。

依照上面的的規律來看,跟費氏數列的差別就是沒有開頭的1。
先把費式數列的code完成,input n,呼叫費式數列的時候,就用fibo(n+1)輸出就好。
那20輸出的也是10946,這樣就確定沒有問題了。


突然想到,這不就是小朋友爬樓梯嗎?
好久好久以前,就跟這個題目相遇過了。
只是他現在名字變成Bert爬樓梯了,因為題目都是Bert出的。
詳請請見zerojudge的c547

順帶一提我剛剛進去看的時候發現管理員不是Bert了,變成 andy89923 (CTFang)。
原本題目會有標籤,標籤也都不見了。
一開始剛學的時候,都是靠著板橋高中教學題的說QQ

結束

大概就醬。
因為老師說希望大家不要流出題目,所以我就不把題目放上來了。大概大概的講一下就好。

原本還很擔心出現印圖形的題目,因為我實在是很不會印圖形。
遙想當年初階程式設計印圖形,我直接印不出來……
所以我其實準備了各種印圖形的code,貼在老師的講義上,然後都沒用到。
最後還是靠我的小本本ouo

好笑的是到現場才發現大家都準備十足(?)
他們都帶著厚厚的課堂程式碼影本過來,看起來十分的有厚度,還有驚人影印費用。

我在宿舍抄完我那幾張筆記之後,跟室友說:「給你看我做好準備了!」
室友:「那應該也可以用印的吧?」
我:「……對耶!」

就當作我現省2塊吧:)


另外有些想吐槽的東西。
考試規定禁止使用瀏覽器,但題目給的是pdf,啊pdf就要用瀏覽器開啊。連上傳code都要到eeclass上面上傳了,eeclass也要用瀏覽器開,那這樣是想怎樣?
助教想了一下說那還是讓我們開好了。
不是,你們原本完全沒有想到這個問題嗎?

還有另一個規定是只能用vscode跟eclipse, 在用之前還要開新的workspace,但vscode就只是叫你開一個新的資料夾而已。

附錄

拿來看java怎麼寫的第一頁:

內建sort與bubble sort:

Binary Search跟fibonacci但都是遞迴版

類別與介面

本文章以 CC BY-NC-ND 4.0 授權