Array ISYS 350
Array An array allows you to store a group of items of the same type together. Processing a large number of items in an array is easier than processing a large number of items stored in separate variables.
Declaring a Array Declare an array in one statement: Type[] arrayName = new type[array size]; Ex: string[]empName = new string[3]; double[] intRate = new double[6];
Array Elements Array elements are indexed from 0 to array size – 1. Each element can be accessed by its index: arrayName[index] Ex: empName[0] intRate[2]
Array Initialization With the declaration statement: string[] empName = new string[3] { "Peter", "Paul", "Mary" }; double[] intRate = new double[6] { .03, .04, .05, .06, .07, .08 }; Initialize each element separately: empName[0] = "Peter"; empName[1] = "Paul"; empName[2] = "Mary";
Accessing Array Elements with a for loop int arrayIndex; for (arrayIndex = 0; arrayIndex <= 2; ++arrayIndex) { MessageBox.Show(empName[arrayIndex].ToString()); } Using array’s Length property: for (arrayIndex = 0; arrayIndex <= empName.Length-1; ++arrayIndex) { MessageBox.Show(empName[arrayIndex].ToString()); } Note: Length - 1
Example: Compute the sum and average of numbers in an array double[] myGPAs = new double[5] { 2.5, 3.2, 3.4, 2.9, 3.6 }; double sumGPA=0, avgGPA; for (int i = 0; i <= myGPAs.Length - 1; ++i) { sumGPA += myGPAs[i]; } avgGPA = sumGPA / myGPAs.Length; MessageBox.Show("Average GPA is: " + avgGPA);
foreach Loop The foreach statement repeats a group of embedded statements for each element in an array.
foreach loop example double[] myGPAs = new double[5] { 2.5, 3.2, 3.4, 2.9, 3.6 }; double sumGPA = 0, avgGPA; foreach (double d in myGPAs) { sumGPA += d; } avgGPA = sumGPA / myGPAs.Length; MessageBox.Show("Average GPA is: " + avgGPA);
Using Array’s Methods and Length property Sum(), Average(), Max(), Min(); double[] myGPAs = new double[5] { 2.5, 3.2, 3.4, 2.9, 3.6 }; double avgGPA, maxGPA, minGPA; avgGPA = myGPAs.Average(); maxGPA = myGPAs.Max(); minGPA=myGPAs.Min(); MessageBox.Show(“The size of array is: " + myGPAs.Length);
Create a Loan Payment Form
If rates are stored in an array Method 1: Using a loop to create the Listbox with rates in the Form Load event string[] strRate = new string[6] { "3%", "4%", "5%", "6%", "7%", "8%" }; for(int i=0;i<=strRate.Length-1;i++) { listBox1.Items.Add(strRate[i]); }
Method 2: Data Binding Binding an array to a control’s DataSource property A string array to store rates with “%”: string[] strRate = new string[6] { "3%", "4%", "5%", "6%", "7%", "8%" }; Bind the array to a listbox: listBox1.DataSource = strRate; Using the Form Load event
Data Binding Example private void Form1_Load(object sender, EventArgs e) { string[] strRate = new string[6] { "3%", "4%", "5%", "6%", "7%", "8%" }; listBox1.DataSource = strRate; }
Parallel Array Example A parallel array to store the numerical rates: double[] intRate = new double[6] { .03, .04, .05, .06, .07, .08 }; Use listbox selectedIndex to access the rate: intRate[listBox1.SelectedIndex]
Code Example double[] intRate = new double[6] { .03, .04, .05, .06, .07, .08 }; double loan, rate, term, payment; loan = double.Parse(textBox1.Text); rate = intRate[listBox1.SelectedIndex]; if (radioButton1.Checked) term = 15; else term = 30; payment = Financial.Pmt(rate / 12, term * 12, -loan); textBox2.Text = payment.ToString("c");
Sort an Array Array Class: Sort Method Example: Sort array elements in increasing order Example: Array.Sort(myGPAs);
Exercise: Weighted Avg of three exams= 60%. highest score +30% Exercise: Weighted Avg of three exams= 60%*highest score +30%*2nd highest score +10%*lowest score Method 1: You may sort the array of exam scores. Or Method 2: You may use the Max, Min and Sum functions.
Count the number of words in a textbox string.Split() returns an array: https://msdn.microsoft.com/en-us/library/tabh47cf(v=vs.110).aspx
Count words example String myText = textBox1.Text; string[] wordList = (myText.Split(default(string[]), StringSplitOptions.RemoveEmptyEntries)); textBox2.Text = wordList.Length.ToString(); foreach (string s in wordList) { MessageBox.Show(s.ToString()); }
Using an array of seperators string[]sep = new string[3] { "," ," ", ";" }; String myText = textBox1.Text; string[] wordList = (myText.Split(sep, StringSplitOptions.RemoveEmptyEntries)); foreach (string s in wordList) { MessageBox.Show(s.ToString()); }
List<T> Class Represents a strongly typed list of objects that can be accessed by index. Objects stored in a list must be the same type of object. A list of type T objects A list of int, srting, etc. List resizes dynamically, no need to declare size.
List Property and Methods Count Add Clear
Example List<int> myInts = new List<int>(); myInts.Add(5); MessageBox.Show(myInts.Count.ToString());
foreach Loop List<int> myInts = new List<int>(); myInts.Add(5); myInts.Add(10); myInts.Add(11); MessageBox.Show(myInts.Count.ToString()); int sum = 0; foreach(int i in myInts) { MessageBox.Show(i.ToString()); sum += i; } MessageBox.Show(sum.ToString());