iT邦幫忙

2025 iThome 鐵人賽

DAY 12
0

琢磨了一會兒「H排9號」後,我突然靈光一閃,脫口而出:「索引是不是座標的一種?」

小孩眼睛一亮,笑著點頭:「你很敏銳嘛,沒錯。兩者有很多相同之處。像是座標跟陣列一樣,通常都從 0 開始,而不是 1。」

「我知道座標從 0 開始,但是為什麼陣列也是這樣?」我皺著眉。

小孩笑著解釋:「因為這個數字也代表資料相對於起點的存放位置。第一個資料佔據的就是 0 到 1 這段區間,第二個資料則是 1 到 2 的區間。因此第一個資料的索引是 0 。」

「原來如此。」

平常都是用數量來做編號,所以才會從 1 開始,如果是用位置,那的確從 0 開始更合理。

「既然你理解了,那我就開始說明程式碼的部分囉。」

他在半空中一揮手,眼前的空間和上次一樣浮現出閃閃發亮的程式碼:

    val seats = arrayOf(0, 0, 1, 0, 0)

「這是一維陣列。」他指著那串數字,「我讓陣列存進每個座位的售票狀態。0 表示空位,1 表示已經賣出。現在你看到的狀態,是只有第三個座位有人買票。」

他眨眨眼:「你覺得我要怎麼寫才能拿到第一個座位的狀態?」

我心想既然是0,就直接在後面寫0吧,於是大膽地寫下了:

    seats0

小孩馬上笑出聲來:「可惜唷,差一點。正確的寫法是 seats[0]。」

「咦?還要加中括號?」我疑惑。

「沒錯,中括號就像是一種對照關係。你問 0 號座位,電腦就對照出 seats 裡的第 0 個位置。這樣才能準確找到對應的資料。」

小孩隨即又一揮手,眼前的程式碼立刻變了樣,從單純的一行橫排,變成整齊的多行排列。

    val seats = arrayOf(
    arrayOf(0, 0, 1, 0, 0),  // 第一排
    arrayOf(0, 1, 0, 0, 0),  // 第二排
    arrayOf(1, 0, 0, 0, 0)   // 第三排
	)

「現在我用二維陣列,你告訴我第一排第一個座位號碼是?」

我猶豫了一下。既然一維要用一個中括號,那二維是不是就要用兩個?我深吸一口氣,寫下:

    seats[0][0]

小孩立刻拍手大笑:「非常完美,就是這樣!」

我心裡一陣暢快,原來還滿簡單的嘛。


上一篇
影廳的座位祕密
下一篇
讓程式碼更美味
系列文
奶茶裡藏的資料結構(Kotlin範例)15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言