陳乃誠 · 大乃老師

2026-08-01 · AI 工具與工作流

複選題點不下去?一個字串永遠不等於陣列的 bug

字字珠璣實戰模式改版後,官方多選題「無法點選」的真正原因,其實是一段沒跟上資料結構變化的舊邏輯。

老師,我明明選對了啊,這題怎麼點不下去?

這句話,是我這幾天收到最有意思的一份「回報」。

我做的「字字珠璣」是一個給學生練字音字形、成語的免費網站,裡面有一個「實戰」模式,題目全部是基測、會考、學測、指考的官方真題。上週我把它整個改版:單選題答完立刻公布全部選項對錯+完整解析,不用再一格一格猜;裡面有三十題「官方本來就是多選」的真題,也改成正規的複選作答,勾好再送出核對,不再硬塞成單選失真。

改完,還特地加了「出自:某年某考國文第幾題」這行小字,讓學生知道——這不是我編的,是真的考過的題目。

結果隔天使用者回報:「複選題無法點選。」

我第一反應是懷疑點擊事件壞了,程式碼看了三遍都沒問題,還親自到正式站上重現操作,怎麼點都正常。

後來才發現,問題根本不在「點擊」,在另一個功能——遊戲裡有個「點化」技能,可以幫玩家劃掉一個錯誤選項。這功能原本是設計給單選題用的,判斷邏輯是「這個選項的文字跟正解不一樣,就是錯的,可以劃掉」。

但官方多選題的正解是「一個陣列」,不是一個字串。字串永遠不會等於陣列——所以程式把每一個選項都當成「錯的」,包含真正的正解在內。運氣不好的時候,點化技能就會把學生要選的正解直接劃掉、鎖住,變成點不了。

學生沒有做錯任何事,是程式自己把答案藏起來了。

這件事讓我想到一個常常被忽略的道理:多選題和單選題,從來就不是「選項變多一點」的差別,是完全不同的資料結構。任何一段沒有針對這個差異重新檢查過的舊邏輯,都可能在某個角落悄悄咬人。而且咬人的時候通常不會報錯,它只是安安靜靜地讓你以為自己選錯了。

修好之後,我也順手把鍵盤操作補齊:數字鍵一到五選選項,空白鍵或Enter鍵都能送出、進下一題,讓習慣打字的學生不用每題都伸手去點滑鼠。

另外為了不讓每個人一開站就被公告卡住,我加了一個小規則:只有本來就有存檔紀錄的舊玩家,才會看到「這次更新了什麼」的公告卡,而且同一個版本只彈一次;全新玩家第一次進站,直接開始玩,不會被無關的更新記錄擋住。

如果你也在維護什麼系統或工具,我想留一句話給你:

使用者說「按不到」,通常不是他們的問題,是系統裡有一段邏輯,忘了世界不是只有一種形狀。

你有沒有遇過類似的經驗——明明覺得程式邏輯萬無一失,結果問題出在一個你完全沒想到的角落?歡迎留言跟我說說。

標籤:#字字珠璣#國文教學#程式除錯#AI工具開發#教育科技
← 回部落格