basic - week 11 & 12

Upload: pendekar-jelapang-padi

Post on 06-Apr-2018

222 views

Category:

Documents


0 download

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