Vous êtes sur la page 1sur 61

ARRAY

array
1

Chapter Objectives
Learn about arrays. Explore how to declare and manipulate data into 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 twodimensional array. Learn about multidimensional arrays.
array
2

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).

array

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 item1 item2 item3 item4 = = = = = input.nextInt(); input.nextInt(); input.nextInt(); input.nextInt(); 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); } }

array

continue
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.
5

array

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 relative

positions in the array.


Types of array - One-Dimensional array - Two-Dimensional array - Multi Dimensional array
array
6

One-Dimensional Arrays
Syntax to declare an array:
<dataType>[] <arrayName> = new <dataType>[intExp]; Or

<dataType> <arrayName>[]= new <dataType>[intExp];


1. dataType 2. arrayName 3. intExp : a type of data will be store in array or component type : a reference variable for array : size of an array (> 0)

Syntax to access an array component: - arrayName[indexExp]


array
7

Example
int[] num = new int[5]; or int num[] = new int[5];

This statement declare and creates the array num of 5 components. Each component is int data type
The components are num[0], num[1], num[2], num[3], num[4]

num

The value in square bracket [ ] is call index and it start at 0


array
8

continue

element index

In java, [ ] is call as array subscripting operator Items in an array is called elements


array
9

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;

array

grade[0] = B; grade[1] = C; grade[2] = B; grade[3] = A; grade[4] = C;

10

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)
array
11

array

12

Specifying Array Size During Program Execution (dynamic array)


Array that are created during program execution

is 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 of arraysize to instantiate

the object list


array
13

Array Initialization During Declaration


We also can assign a value into the array during declaration

double[]sales = {12.25, 32.50, 16.90, 23.00, 45.68};


The values, called initial values, are placed between 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.
array
14

Arrays and the Instance Variable length


A public instance variable length is associated with 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 six components and initializes the components using the values given. Here list.length is 6.
array
15

Loops and Arrays


Loops can be used to process array in several

ways: 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

array

16

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;

array

17

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] + " ");
array
18

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;

array

19

5. Determining the largest element in the array

double[] sales = new double[10]; int index, maxIndex; double largestSale; maxIndex = 0; for(index = 1; index<sales.length;index++) if (sales[maxIndex] < sales[index]) maxIndex = index; largestSale = sales[maxIndex];

array

20

continue
Suppose the array sales is as figure 9.5

array

21

Array Index Out of Bounds


An array is in bounds if: 0 <= index <= arraySize 1 An array is in out bounds if: index < 0 or index > arraySize If an array is out of bounds;

i. ArrayIndexOutOfBoundsException exception is thrown. ii. The program will terminates with an appropriate error message
array
22

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)

array

23

Consider the following loops for (i = 0; i <= 10; i++) list[i] = 5; When i = 10; list[i] = list[10] = 5; The program tries to access list[10] but does not exist We say the index is out of bound

list[0]

list[1] list[2] list[3] list[4] list[5] list[6] list[7] list[8] list[9]

5 5 5 5 5 5 5 5 5
24

array

Manipulate data into arrays


Searching a value Calculation Reverse element

array

25

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
int Search (int[ ] num, int search value){ int location; for (i=0; i =num.length; i++) if(num[i] = = search Value) location = i; return location; }

array

26

Assume the num values as below: int[] num = {10,20,30,40,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] 10 20 30 40 50 60 70 80 90 100

If searchValue is 60, the

method will return 5 to Search method.

Location, i

array

27

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];


array
28

Array[0] Array[1] Array[2] Array[3] Array[4] Array[5] Array[6] Array[7]

10 20 30 40 50 60 70 80

Array[0] Array[1] Array[2] Array[3] Array[4] Array[5] Array[6] Array[7]

11 22 33 44 55 66 77 88

Array[0] Array[1] Array[2] Array[3] Array[4] Array[5] Array[6] Array[7]

21 42 63 84 : : : :

Array[8] 90 Array[9] 100

Array[8] 99 Array[9] 110


array

Array[8] Array[9]

: :
29

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]; Output int i; for (i=0; i < 10; i++) { Array3[i] = Array1[i] + Array2[i]; System.out.println("Array3["+i+"]= +Array3[i]); } }

Array3[0] = 21
Array3[1] = 42 Array3[2] = 63 Array3[3] = 84

Array3[4] = 105
Array3[5] = 126 Array3[6] = 147 Array3[7] = 168 Array3[8] = 189 Array3[9] = 210

array

30

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
1 2 3 4 5 6 7 8 9

10
20 30 40 50 60 70 80 90 100
array

11
22 33 44 55 66 77 88 99 110

21
42 63 84 105 126 147 168 189 210
31

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]); }
array
32

Output

Enter ten integers number: 56 65 67 43 64 76 39 77 47 84 The numbers in reverse order are: 84 47 77 39 76 64 43 67 65 56 array

33

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 parameters listA, listB and num
array
34

continue
Suppose we have the following statement
int[] intList = new int[10]; double[] doubleNumList = new double[15]; int number;

Statement to call the method


arrayAsFormalParameter(intList, doubleNumList, number);

Actual parameter
array 35

example 1
public 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); Passing parameter }
public static void printArray(int[] number) { for (int index = 0; index < number.length; index++) System.out.println(number[index] + ""); } }

"

OUTPUT:
10 20 30 40 50 60

The number of elements: 7

array

70

36

example 2
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]);

array

continue
37

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

38

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

39

Array of Object
Can use arrays to manipulate objects. Example: Create an array named array1 with N object 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, second b) student name, matric, age
array
40

example
Input students information's (name,matric, age) into array and print out the output
class StudentInfo{ String name; String matric; int age;

}
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); }

array

41

public StudentInfo[] InputData() int i; StudentInfo[] student = new StudentInfo[N]; System.out.println("\nEnter Students Information "); public void PrintInfo(StudentInfo[] Std) { int i; System.out.println("List of students :\n");

System.out.println("_______________________ ____ \n");


for (i = 0; i< N; i++) { student[i] = new StudentInfo(); System.out.print("Name : ");

for (i=0;i<N;i++)
{ System.out.println((i+1) + ". " + Std[i].matric + " " + Std[i].name + " " + " " + Std[i].age);

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; }

array

42

output
Enter Students Information ___________________________ Name : BAHARUDIN OSMAN

Matric No : S11111 Age Name : 30 : BADRUL HAZMI

Matric No : S23212 Age Name : 28 : NUR BADRINA

Matric No : S34213 Age List of students : 1. S11111 BAHARUDIN OSMAN 2. S23212 BADRUL HAZMI 3. S34213 NUR BADRINA
array

: 27

30 28 27
43

Statement below create an array of arrivalTimeEmp


Clock[] arrivalTimeEmp = new Clock[100];

array

44

Instantiating of Array Objects


for (int j = 0; j < arrivalTimeEmp.length; j++) arrivalTimeEmp[j] = new Clock();

array

45

Continue

Setting a time for index 49


arrivalTimeEmp[49].setTime(8, 5, 10);

array

46

Delete Object
Step

i. Identify the element to delete ii. Point the object to delete null iii. Move up all elements (after deleted object) iv. Point the last element to null

array

47

Example

Step 1 : Identify the element to delete Step 2 : Point the object to delete to null - if the sixth element to delete

student

for (i=0; i < student.length; i++) if(i==5) then student[i] = null


Name Matric IC

null

Name Matric IC

array

Name Matric IC

48

iii. Move up all elements (after deleted object) iv. Point the last element to null
student
for (i = 0; i < student.length; i++) if (i= =5) student[i] = student[student.length -1) if (i= = (student.length 1)) student[i] = null
[0] [1] [2] [3] [4] [5]
element A element B element C element D element E element element G

student
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
element A element B element C element D element E element G element H

Set the last element to null

[6] [7] [8] [9]

element H
element I element J

element I
element J

before
array

after

null
49

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 represent using a one-dimensional array).

10
20 30 40 50 60 70

11
22 33 44 55 66 77

21
42 66 84 105 126 147

45
34 21 32 13 21 33

80
90

88
99

168
189

22
123

array

50

continue

To declare/instantiate a two-dimensional array:


dataType[ ][ ] arrayName = new data Type[intRow][intCol];

intRow => number of rows intCol => number of columns intRow and intCol > 0

Eg.
double[ ][ ] sales = new double[10][15];
array
51

double[ ][ ] sales = new double[10][5];

array

52

Accessing Array Components

To access a component of a two-dimensional array: arrayName[indexExp1][indexExp2]; indexExp1 = row position indexEXp2 = column position

Eg.

sales [5][3] = 25.75;

The above statement stores 25.75 into row number 5 and column number 3; (the 6th row and the 4th column)

array

53

Sales [5][3] = 25.75;

array

54

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}};

array

55

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];


array
56

Initialization
for (row = 0; row < matrix.length; row++) for (col = 0; col < matrix[row].length; col++) matrix[row][col] = 10;

matrix

array

57

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())

array

58

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); }

array

59

Multidimensional Arrays

Can define three-dimensional arrays or n-dimensional arrays (n can 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 = nonnegative integers

array

60

Loops to Process Multidimensional Arrays

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;

array

61

Vous aimerez peut-être aussi