iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 2
0

假設今天要撰寫一個程式,是計算3個學生的數學成績的平均值,那麼程式勢必需要3位學生的數學成績,也就是先宣告3個變數,個別儲存3位學生的數學成績,接著將變數做數學上的運算。

public static void main(String[] argv)
{
	//student scores
	double student1 = 50, student2 = 64, student3 = 88;
	
	double sum = student1 + student2 + student3;
	
	double average = sum / 3;
	
	System.out.print("average:" + average);
}

輸出結果:

average:67.33333333333333

達成正確目的,但是有些小問題???

由於這個題目所要求的學生數量就只有3位學生,假若要求的是一千位學生,甚至高達一萬位學生的時候,逐一宣告每位學生的成績太費時,會影響寫程式的效率,而且容易讓程式出現錯誤


解決方法

因此,我們需要一種可以儲存多個資料的變數,並且儲存的資料總數量能隨時取得的儲存方式。
陣列,能解決上述程式需要逐一宣告變數的問題,是資料結構中最常使用的資料儲存組織的方法。

什麼是陣列(Array)呢?

由多個相同型別的元素所組成的串列,所有元素共用同一名稱,並且加上index方便區別

舉例來說,以double[3] students方式宣告一個double的陣列,一共有3個元素,會佔據連續的記憶體位置,也就是陣列第一個元素的位置後面會是陣列第二個元素,以此類推。

用更想像的話來說,變數就是一個小櫃子裡存放一個資料,而陣列就像是將好幾個小櫃子組成一個大櫃子,但仍然是將大櫃子裡的各個小櫃子用來個別儲存變數,一個小櫃子即為陣列的一個元素。

將上述題目 - 計算3個學生的數學成績的平均值 由陣列的儲存方式來實作

public static void main(String[] argv)
{
	//宣告陣列
	double[] students = {50, 64, 88}; 
	
	double sum = 0;
	
	for(int i = 0; i < students.length; i++)
		sum = sum + students[i];
	
	double average = sum / students.length;
	
	System.out.print("average:" + average);
}

輸出結果:

average:67.33333333333333

從程式碼中可以看出,僅需要宣告陣列(一行程式碼),即可以將3位學生的成績儲存了~


僅想在此介紹陣列使用時機與跟變數的差別,對於程式語法就不多贅述。
進步太慢就是退步,共勉之。

參考

細談資料結構 第六版
ISBN 978-986-312-014-8


上一篇
[Data Structure]
下一篇
[Data Structure][Linked list]
系列文
學習資料結構30天30

尚未有邦友留言

立即登入留言