basic - week 11 & 12
TRANSCRIPT
-
8/3/2019 Basic - Week 11 & 12
1/59
array 1
ARRAY
-
8/3/2019 Basic - Week 11 & 12
2/59
array 2
Learn about arrays.
Explore how to declare and manipulate datainto arrays.
Understand the meaning of array index out
of bounds.
Become familiar with the restrictions on array
processing.
Discover how to pass an array as a parameter to a
method.
Discover how to manipulate data in a two-
dimensional array.
Learn about multidimensional arrays.
Chapter Objectives
-
8/3/2019 Basic - Week 11 & 12
3/59
array 3
Why do need array
Let consider the following problem
How do we write Java program that read five
numbers, find the sum, and prints the numbers
in reverse order
Normally, we need to store all the numbers in 5
variables before we can print it in reverse order
Let see the following code. (next slide).
-
8/3/2019 Basic - Week 11 & 12
4/59
array 4
import java.util.*;
public class ReverseOrder
{
public static void main(String [] args)
{
int item0, item1, item2, item3, item4;
int sum;Scanner input = new Scanner(System.in);
System.out.println("Enter five integers one number per line");
item0 = input.nextInt();
item1 = input.nextInt();
item2 = input.nextInt();item3 = input.nextInt();
item4 = input.nextInt();
sum = item0 + item1 + item2 + item3 + item4;
System.out.println("The sum of the numbers = " + sum);
System.out.println("The numbers in reverse order are: ");
System.out.println(item4 + " " + item3 + " " + item2 + " " + item1 +" " + item0);
}
}
-
8/3/2019 Basic - Week 11 & 12
5/59
array 5
We need 5 variables to hold the data
What happen if we want to read 100 (or more)
numbers and print them in reverse order.
So, we need 100 variables to hold all data.(item0, item1, item2, item3, item4, item5,100)
For large of data, this code is not desirable.
We need an ARRAY.
continue
-
8/3/2019 Basic - Week 11 & 12
6/59
array 6
What is Array
A structured data type with a fixed number of
components.
Every component is of the same type.
Components are accessed using their relativepositions in the array.
Types of array
- One-Dimensional array
- Two-Dimensional array
- Multi Dimensional array
-
8/3/2019 Basic - Week 11 & 12
7/59
array 7
One-Dimensional Arrays
Syntax to declare an array:
[] = new [intExp];
Or
[]= new [intExp];
1. dataType : a type of data will be store in
array or component type
2. arrayName : a reference variable for array
3. intExp : size of an array (> 0)
Syntax to access an array component:
- arrayName[indexExp]
-
8/3/2019 Basic - Week 11 & 12
8/59
array 8
Example
int[] num = new int[5]; or
int num[] = new int[5];
This statement declare and
creates the arraynumof 5
components.
Each component is intdata type
The components are num[0],
num[1], num[2], num[3], num[4]
The value in square bracket [ ] is
call index and it start at 0
num
-
8/3/2019 Basic - Week 11 & 12
9/59
array 9
continue
element
index
In java, [ ] is call as array subscripting operator
Items in an array is called elements
-
8/3/2019 Basic - Week 11 & 12
10/59
array 10
Continue
Array of five
integers called test
Array of five
characters
called grade
test[0] = 85;
test[1] = 98;
test[2] = 75;
test[3] = 87;
test[4] = 68;
grade[0] = B;
grade[1] = C;
grade[2] = B;
grade[3] = A;
grade[4] = C;
-
8/3/2019 Basic - Week 11 & 12
11/59
array 11
Assign a value into array
int[] list = new int[10];
Assume the declaration as above.
Statement;
list[3] = 10;
list[6] = 35;
list[5] = list[3] + list[6];
will store 10, 45 and 35 into the array in list[3],
list[5] and list[6] respectively. (see next figure)
-
8/3/2019 Basic - Week 11 & 12
12/59
array 12
-
8/3/2019 Basic - Week 11 & 12
13/59
array 13
Specifying Array Size During Program
Execution (dynamic array)
Array that are created during program executionis called dynamic array
Enables user to specify the size of the array
int arraySize;
System.out.print("Enter the size of the array: ");arraySize = input.nextInt();
int[] list = new int[arraySize];
The system use the value ofarraysize to instantiate
the object list
-
8/3/2019 Basic - Week 11 & 12
14/59
array 14
Array Initialization During Declaration
We also can assign a value into the array during declarationdouble[]sales = {12.25, 32.50, 16.90, 23.00,
45.68};
The values, called initial values, are placedbetween braces and separated by commas
When declaring and initializing arrays, the
size of the array is determined by the number
of initial values within the braces.
If an array is declared and initialized
simultaneously, we do not use the operator
new to instantiate the array object.
-
8/3/2019 Basic - Week 11 & 12
15/59
array 15
Arrays and the Instance Variable length
A public instance variable lengthis associatedwith each array that has been instantiated.
The variable length contains the size of the array.
The variable length can be directly accessed in a
program using the array name and the dot operator.
int[] list = {10, 20, 30, 40, 50, 60};
This statement creates the array list of sixcomponents and initializes the components using the
values given.
Here list.length is 6.
-
8/3/2019 Basic - Week 11 & 12
16/59
array 16
Loops and Arrays
Loops can be used to process array in severalways:
1. Initialing an array to a specific value
2. Input data into an array
3. Printing an array
4. Find the sum and average of an array
5. Determine the largest element in the array
-
8/3/2019 Basic - Week 11 & 12
17/59
array 17
1. Initializing an array to a specific value
eg.to initialize every component of the array sale with a
value of 10.00
double[] sales = new double[10];
int index;
for (index = 0; index < sales.length;index++)
sales[index] = 10.00;
-
8/3/2019 Basic - Week 11 & 12
18/59
array 18
2. Input data into an array
double[] sales = new double[10];
int index;
for (index = 0; index < sales.length;index++)
sales[index] = input.nextDouble();
3. Printing an array
double[] sales = new double[10];
int index;
for(index = 0; index < sales.length;index++)
System.out.print(sales[index] + " ");
-
8/3/2019 Basic - Week 11 & 12
19/59
array 19
4. Find the sum and average of an array
double[] sales = new double[10];
int index, sum;double average;
sum = 0;for(index = 0; index < sales.length;index++)
sum = sum + sales[index];
if (sales.length != 0)
average = sum / sales.length;else
average = 0.0;
-
8/3/2019 Basic - Week 11 & 12
20/59
array 20
5. Determining the largest element in the array
double[] sales = new double[10];
int index, maxIndex;
double largestSale;
maxIndex = 0;
for(index = 1; index
-
8/3/2019 Basic - Week 11 & 12
21/59
array 21
continue
Suppose the array salesis as figure 9.5
-
8/3/2019 Basic - Week 11 & 12
22/59
array 22
Array Index Out of Bounds
An array is in bounds if:
0
-
8/3/2019 Basic - Week 11 & 12
23/59
array 23
example
Consider the following declaration:
double[] num = double[10];
int i;
The component num[i] is valid if i = 0, 1, 2.9
When i < 0 or i >= 10, the component num[i] is
invalid (the index is out of bounds)
-
8/3/2019 Basic - Week 11 & 12
24/59
array 24
Consider the following loopsfor (i = 0; i
-
8/3/2019 Basic - Week 11 & 12
25/59
array 25
Manipulate data into arrays
Searching a value
Calculation
Reverse element
-
8/3/2019 Basic - Week 11 & 12
26/59
array 26
Searching a value
Eg.- A method to search an array of integer The Search method return the location of
the first array element equal to the search value
searchValue = 60;
int[] num = {10,20,30,40,50,60,70,80,90,100};
int location;
for (int i=0; i < num.length; i++)
if(num[i] = = searchValue)
location = i;
-
8/3/2019 Basic - Week 11 & 12
27/59
array 27
Assume the num values as below:
int[] num = {10,20,30,40,50,60,70,80,90,100}
IfsearchValue is 60, the
method will return 5 to Search
method.
40
10
20
30
50
60
70
80
90
100
num[0]
num[1]
num[2]num[3]
num[4]
num[5]
num[6]
num[7]
num[8]
num[9]
Location, i
-
8/3/2019 Basic - Week 11 & 12
28/59
array 28
Calculation in array
Eg:- add a number from Array1 and Array2,
and store the total in Array3
Assume Array1, Array2 and Array3
declarations as below:
int[ ] Array1 = {10,20,30,40,50,60,70,80,90,100};
int[ ] Array2 = {11,22,33,44,55,66,77,88,99,110};
int[ ] Array3 = new int[10];
-
8/3/2019 Basic - Week 11 & 12
29/59
array 29
+
10 2142
63
84
:
:
:
::
:
1120
30
40
50
60
70
8090
100
22
33
44
55
66
77
8899
110
Array[0]Array[1]
Array[2]
Array[3]
Array[4]
Array[5]
Array[6]
Array[7]Array[8]
Array[9]
Array[0]Array[1]
Array[2]
Array[3]
Array[4]
Array[5]
Array[6]
Array[7]Array[8]
Array[9]
Array[0]Array[1]
Array[2]
Array[3]
Array[4]
Array[5]
Array[6]
Array[7]Array[8]
Array[9]
-
8/3/2019 Basic - Week 11 & 12
30/59
array 30
public static void ArraySum()
{
int[] Array1 = {10,20,30,40,50,60,70,80,90,100};
int[] Array2 = {11,22,33,44,55,66,77,88,99,110};
int[] Array3 = new int[10];
int i;
for (i=0; i < 10; i++)
{
Array3[i] = Array1[i] + Array2[i];
System.out.println("Array3["+i+"]=
+Array3[i]);
}
}
Output
Array3[0] = 21
Array3[1] = 42Array3[2] = 63
Array3[3] = 84
Array3[4] = 105
Array3[5] = 126Array3[6] = 147
Array3[7] = 168
Array3[8] = 189
Array3[9] = 210
-
8/3/2019 Basic - Week 11 & 12
31/59
array 31
for (i=0; i < 10; i++)
Array3[i] = Array1[i] + Array2[i];
Values of Array3 during for loop iterations
i Array1[i] Array2[i] Array3[i]
0 10 11 21
1 20 22 422 30 33 63
3 40 44 84
4 50 55 105
5 60 66 126
6 70 77 147
7 80 88 168
8 90 99 189
9 100 110 210
-
8/3/2019 Basic - Week 11 & 12
32/59
array 32
Reverse element
Eg- Read 10 integer numbers, and print the
numbers in reverse order
public static void ReverseOrder()
{
int item[] = new int[10];
int i;//Read integers number and store in item[i]
System.out.println("Enter ten integers number:");
for(i = 0; i < 10; i++)
item[i] = input.nextInt();
//Print the output in reverse order are:");System.out.println("The numbers in reverse order are:");
for(i = 9; i >= 0; i--)
System.out.println(item[i]);
}
-
8/3/2019 Basic - Week 11 & 12
33/59
array 33
Output Enter ten integers number:56
65
67
4364
76
39
77
47
84The numbers in reverse order are:
84
47
77
39
76
64
43
67
65
56
A F l P t t M th d
-
8/3/2019 Basic - Week 11 & 12
34/59
array 34
Arrays as Formal Parameters to Methods
Arrays can be passed as parameter to methods
Eg.
public static void arrayAsFormalParameter(int[] listA,
double[] listB, int num)
{
//
}
Formal parameter
The above method have 3 formal parameterslistA,
listB and num
-
8/3/2019 Basic - Week 11 & 12
35/59
array 35
continue
Statement to call the method
arrayAsFormalParameter(intList, doubleNumList, number);
Actual parameter
int[] intList = new int[10];
double[] doubleNumList = new double[15];
int number;
Suppose we have the following statement
example 1
-
8/3/2019 Basic - Week 11 & 12
36/59
array 36
example 1public class PassingParameter {
public static void main(String[] args)
{
int num[] = {10,20,30,40,50,60,70};
System.out.println( The number of elements: "+ num.length);
printArray(num);
}
public static void printArray(int[] number)
{for (int index = 0; index < number.length; index++)
System.out.println(number[index] + "");
}
}
Passing parameter
OUTPUT:
The number of elements: 7
10
20
30
40
50
60
70
-
8/3/2019 Basic - Week 11 & 12
37/59
array 37
public static void main(String[] args)
{
int[] listA = {11,22,36,42,15,46,27,48,19,10}
int[] listB = new int[10];
int Total, Largest;
// call sumArray method and return a value to Total
Total = sumArray (listA, listA.length);
System.out.println(\n The sum of ListA is :+ Total);
// call indexLargestElement and return the indux value to Largest
indLargest = indexLargestElement (listA, list.length);
System.out.println(\n The largest element is : + listA[Largest]);
example 2
continue
-
8/3/2019 Basic - Week 11 & 12
38/59
array 38
public static int sumArray(int[] list, int noOfElements)
{
int index;
int sum = 0;
for (index = 0; index < noOfElement; index++)
sum = sum + list[index];
return sum;
}
public static int indexLargestElement(int[] list, int noOfElement)
{
int index;
int maxIndex = 0;
for (index = 1; index < noOfElement; index++)
if(list[maxIndex] < list[index])
maxIndex = index;return maxIndex;
}
Array of String Objects
-
8/3/2019 Basic - Week 11 & 12
39/59
array 39
Array of String Objects
String[] nameList = new String[5]
nameList[0] = Amanda Green;
nameList[1] = Vijay Arora;
nameList[2] = Sheila Mann;
nameList[3] = Rohit Sharma;
nameList[4] = Mandy Johnson;
Array of Object
-
8/3/2019 Basic - Week 11 & 12
40/59
array 40
Array of Object
Can use arrays to manipulate objects.
Example: Create an array named array1 with Nobject of type T:
T[] array1 = new T[N]
Can instantiate array1 as follows:
for(int j=0; j , array1.length; j++)
array1[j] = new T();
Eg:a) clock hour, minute, secondb) student name, matric, age
example
-
8/3/2019 Basic - Week 11 & 12
41/59
array 41
import java.util.*;
public class ArrayOfObj {
int N = 3;
StudentInfo[] student = new StudentInfo[N];
public static void main (String[] args)
{
int N = 3;
int i;
ArrayOfObj arr = new ArrayOfObj();
StudentInfo[] Std = new StudentInfo[N];
Std = arr.InputData();
arr.PrintInfo(Std);
}
example
Input students information's (name,matric, age) into array and print out the output
class StudentInfo{
String name;
String matric;
int age;
}
-
8/3/2019 Basic - Week 11 & 12
42/59
array 42
public StudentInfo[] InputData()
int i;
StudentInfo[] student = new
StudentInfo[N];
System.out.println("\nEnter Students
Information ");
System.out.println("_______________________
____ \n");
for (i = 0; i< N; i++)
{
student[i] = new StudentInfo();
System.out.print("Name : ");
student[i].name = input.readLine();
System.out.print("Matric No : ");
student[i].matric = input.nextLine();
System.out.print("Age : ");
student[i].age = input.nextInt();
System.out.println();
}
return student;
}
public void PrintInfo(StudentInfo[] Std)
{
int i;
System.out.println("List of students
:\n");
for (i=0;i
-
8/3/2019 Basic - Week 11 & 12
43/59
array 43
Enter Students Information___________________________
Name : BAHARUDIN OSMAN
Matric No : S11111
Age : 30
Name : BADRUL HAZMI
Matric No : S23212Age : 28
Name : NUR BADRINA
Matric No : S34213
Age : 27
List of students :
1. S11111 BAHARUDIN OSMAN 30
2. S23212 BADRUL HAZMI 28
3. S34213 NUR BADRINA 27
output
-
8/3/2019 Basic - Week 11 & 12
44/59
array 44
Statement below create an array of arrivalTimeEmp
Clock[] arrivalTimeEmp = new Clock[100];
Instantiating of Array Objects
-
8/3/2019 Basic - Week 11 & 12
45/59
array 45
Instantiating of Array Objects
for (int j = 0; j < arrivalTimeEmp.length; j++)
arrivalTimeEmp[j] = new Clock();
-
8/3/2019 Basic - Week 11 & 12
46/59
array 46
Continue
Setting a time for index 49
arrivalTimeEmp[49].setTime(8, 5, 10);
T o Dimension Arra
-
8/3/2019 Basic - Week 11 & 12
47/59
array 47
Two-Dimension Array
A collection of a fixed number of components
arranged in rows and columns. All components are in same type.
Data is sometimes in table form (difficult to representusing a one-dimensional array).
10 11 21 45
20 22 42 34
30 33 66 21
40 44 84 32
50 55 105 13
60 66 126 21
70 77 147 33
80 88 168 22
90 99 189 123
continue
-
8/3/2019 Basic - Week 11 & 12
48/59
array 48
continue
To declare/instantiate a two-dimensional array:
dataType[ ][ ] arrayName = new data Type[intRow][intCol];
intRow => number of rowsintCol => number of columns
intRow and intCol > 0
Eg.
double[ ][ ] sales = new double[10][15];
-
8/3/2019 Basic - Week 11 & 12
49/59
array 49
double[ ][ ] sales = new double[10][5];
Accessing Array Components
-
8/3/2019 Basic - Week 11 & 12
50/59
array 50
Accessing Array Components
To access a component of a two-dimensional array:
arrayName[indexExp1][indexExp2];
indexExp1 = row position
indexEXp2 = column position
Eg.
The above statement stores 25.75 into row number 5 and columnnumber 3; (the 6th row and the 4th column)
sales [5][3] = 25.75;
-
8/3/2019 Basic - Week 11 & 12
51/59
array 51
Sales [5][3] = 25.75;
-
8/3/2019 Basic - Week 11 & 12
52/59
array 52
Array Initialization During Declaration
2-Dimensional array can be initialized during declaration
Eg.
int[ ][ ] board = { {2,3,1},
{15,25,13},
{20,4,7},{11,18,14}};
P i 2 Di i l A
-
8/3/2019 Basic - Week 11 & 12
53/59
array 53
Processing 2-Dimensional Array
eg.
Initialization Print
Input data/store data into 2-Dimensional array
Sum the data
Find the largest element
Suppose the declaration as below:
int row;
int column;
int matix = new int[7][6];
-
8/3/2019 Basic - Week 11 & 12
54/59
array 54
Initialization
for (row = 0; row < matrix.length; row++)
for (col = 0; col < matrix[row].length; col++)matrix[row][col] = 10;
matrix
-
8/3/2019 Basic - Week 11 & 12
55/59
array 55
Print
for (row = 0; row < matrix.lenth; row++)
{for ( col = 0; col < matrix[row].length; col++)
System.out.println(matrix[row][col]);
System.out.println();
}
Read Data
for (row = 0; row < matrix.length; row++)
for (col = 0; col < matrix[row].length; col++)
matrix[row][col] = Integer.parseInt(keyboard.readLine())
-
8/3/2019 Basic - Week 11 & 12
56/59
array 56
Sum by Row
for (row = 0; row < matrix.length; row++)
{ sum = 0;
for (col = 0; col < matrix[row].length; col++)
sum = sum + matrix[row][col];
System.out.println(Sum of row+ (row + 1) + = + sum);
}
Sum by Column
for (col = 0; col < matrix[0].length; col++)
{
sum = 0;
for (row = 0; row < matrix.length; row++)
sum = sum + matrix[row][col];
System.out.println(Sum of column + (col + 1) +=+ sum);
-
8/3/2019 Basic - Week 11 & 12
57/59
array 57
Largest Element in Each Row
for (row = 0; row < matrix.length; row++)
{
largest = matrix[row][0];
for (col = 1; col < matrix[row].length; col++)
if (largest < matrix[row][col])
largest = matrix[row][col];
System.out.println(The largest element of row+ (row+1)
+=+ largest);
}
M ltidi i l A
-
8/3/2019 Basic - Week 11 & 12
58/59
array 58
Can define three-dimensional arrays or n-dimensional arrays (ncan be any number).
Syntax to declare and instantiate array:
dataType[][][] arrayName = new
dataType[intExp1][intExp2][intExpn];
Syntax to access component:arrayName[indexExp1][indexExp2][indexExpn]
intExp1, intExp2, ..., intExpn = positive integers indexExp1,indexExp2, ..., indexExpn = non-
negative integers
Multidimensional Arrays
Loops to Process Multidimensional Arrays
-
8/3/2019 Basic - Week 11 & 12
59/59
double[][][] carDealers = new double[10][5][7];
for(i = 0; i < 10; i++)
for(j = 0; j < 5; j++)
for(k = 0; k < 7; k++)
carDealers[i][j][k] = 10.00;
Loops to Process Multidimensional Arrays