Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 9: Arrays J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design, Second Edition Second Edition.

Similar presentations


Presentation on theme: "Chapter 9: Arrays J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design, Second Edition Second Edition."— Presentation transcript:

1 Chapter 9: Arrays J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design, Second Edition Second Edition

2 Java Programming: From Problem Analysis to Program Design, Second Edition2 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.

3 Java Programming: From Problem Analysis to Program Design, Second Edition3 Chapter Objectives  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.

4 Java Programming: From Problem Analysis to Program Design, Second Edition4 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.

5 Java Programming: From Problem Analysis to Program Design, Second Edition5 One-Dimensional Arrays  Syntax to instantiate an array:  dataType[ ] arrayName; arrayName = new dataType[intExp]  dataType[ ] arrayName = new dataType[intExp]  dataType[ ] arrayName1, arrayName2;  Syntax to access an array component:  arrayName[indexExp]  intExp = number of components in array >= 0  0 <= indexExp <= intExp

6 Java Programming: From Problem Analysis to Program Design, Second Edition6 int[] num = new int[5]; Array num

7 Java Programming: From Problem Analysis to Program Design, Second Edition7 Array list

8 Java Programming: From Problem Analysis to Program Design, Second Edition8 int arraySize; System.out.print("Enter the size of " + "the array: "); arraySize = console.nextInt(); System.out.println(); int[] list = new int[arraySize]; Specifying Array Size During Program Execution

9 Java Programming: From Problem Analysis to Program Design, Second Edition9 double[] sales = {12.25, 32.50, 16.90, 23, 45.68};  The values, called initial values, are placed between braces and separated by commas.  Here, sales[0]= 12.25, sales[1]= 32.50, sales[2]= 16.90, sales[3]= 23.00, and sales[4]= 45.68.  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 Initialization During Declaration

10 Java Programming: From Problem Analysis to Program Design, Second Edition10  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.  This statement creates the array list of six components and initializes the components using the values given. Here list.length is 6. int[] list = {10, 20, 30, 40, 50, 60}; Arrays and the Instance Variable length

11 Java Programming: From Problem Analysis to Program Design, Second Edition11  This statement creates the array numList of 10 components and initializes each component to 0. int[] numList = new int[10];  The value of numList.length is 10.  These statements store 5, 10, 15, and 20, respectively, in the first four components of numList. numList[0] = 5; numList[1] = 10; numList[2] = 15; numList[3] = 20;  You can store the number of filled elements, that is, the actual number of elements, in the array in a variable, say noOfElement. It is a common practice for a program to keep track of the number of filled elements in an array. Arrays and the Instance Variable length

12 Java Programming: From Problem Analysis to Program Design, Second Edition12  Loops used to step through elements in array and perform operations. int[] list = new int[100]; int i; for (i = 0; i < list.length; i++) //process list[i], the (i + 1)th //element of list for (i = 0; i < list.length; i++) list[i] = console.nextInt(); for (i = 0; i < list.length; i++) System.out.print(list[i] + " "); Processing One-Dimensional Arrays

13 Java Programming: From Problem Analysis to Program Design, Second Edition13 Arrays  Some operations on arrays:  Initialize  Input data  Output stored data  Find largest/smallest/sum/average of elements double[] sales = new double[10]; int index; double largestSale, sum, average;

14 Java Programming: From Problem Analysis to Program Design, Second Edition14 Code to Initialize Array to Specific Value (10.00) for (index = 0; index < sales.length; index++) sales[index] = 10.00;

15 Java Programming: From Problem Analysis to Program Design, Second Edition15 Code to Read Data into Array for (index = 0; index < sales.length; index++) sales[index] = console.nextDouble();

16 Java Programming: From Problem Analysis to Program Design, Second Edition16 Code to Print Array for (index = 0; index < sales.length; index++) System.out.print(sales[index] + " ");

17 Java Programming: From Problem Analysis to Program Design, Second Edition17 Code to Find Sum and Average of Array 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;

18 Java Programming: From Problem Analysis to Program Design, Second Edition18 Determining Largest Element in Array maxIndex = 0; for (index = 1; index < sales.length; index++) if (sales[maxIndex] < sales[index]) maxIndex = index; largestSale = sales[maxIndex];

19 Java Programming: From Problem Analysis to Program Design, Second Edition19 Determining Largest Element in Array

20 Java Programming: From Problem Analysis to Program Design, Second Edition20 Array Index Out of Bounds  An array is in bounds if: 0 <= index <= arraySize – 1  If index arraySize : ArrayIndexOutOfBoundsException exception is thrown.  Base address: Memory location of the first component in an array.

21 Java Programming: From Problem Analysis to Program Design, Second Edition21 Declaring Arrays as Formal Parameters to Methods General syntax to declare an array as a formal parameter: dataType[] arrayName public static void arraysAsFormalParameter(int[] listA, double[] listB, int num) { //... } int[] intList = new int[10]; double[] doubleNumList = new double[15]; int number; arraysAsFormalParameter(intList, doubleNumList, number);

22 Java Programming: From Problem Analysis to Program Design, Second Edition22 The Assignment Operators and Arrays

23 Java Programming: From Problem Analysis to Program Design, Second Edition23 The Assignment Operators and Arrays

24 Java Programming: From Problem Analysis to Program Design, Second Edition24 for (int index = 0; index < listA.length; index++) listB[index] = listA[index]; The Assignment Operators and Arrays

25 Java Programming: From Problem Analysis to Program Design, Second Edition25 Relational Operators Arrays if (listA == listB)...  The expression listA == listB determines if the values of listA and listB are the same, thus determining whether listA and listB refer to the same array.  To determine whether listA and listB contain the same elements, you need to compare them component by component.  You can write a method that returns true if two int arrays contain the same elements.

26 Java Programming: From Problem Analysis to Program Design, Second Edition26 Relational Operators and Arrays boolean isEqualArrays(int[] firstArray, int[] secondArray) { if (firstArray.length != secondArray.length) return false; for (int index = 0; index < firstArray.length; index++) if (firstArray[index] != secondArray[index]) return false; return true; } if (isEqualArrays(listA, listB))...

27 Java Programming: From Problem Analysis to Program Design, Second Edition27 Methods for Array Processing public static void fillArray(int[] list, int noOfElements) { int index; for (index = 0; index < noOfElements; index++) list[index] = console.nextInt(); }

28 Java Programming: From Problem Analysis to Program Design, Second Edition28 public static void printArray(int[] list, int noOfElements) { int index; for (index = 0; index < noOfElements; index++) System.out.print(list[index] + " "); } public static int sumArray(int[] list, int noOfElements) { int index; int sum = 0; for (index = 0; index < noOfElements; index++) sum = sum + list[index]; return sum; } Methods for Array Processing

29 Java Programming: From Problem Analysis to Program Design, Second Edition29 public static int indexLargestElement(int[] list, int noOfElements) { int index; int maxIndex = 0; for (index = 1; index < noOfElements; index++) if (list[maxIndex] < list[index]) maxIndex = index; return maxIndex; } public static void copyArray(int[] list1, int[] list2, int noOfElements) { int index; for (index = 0; index < noOfElements; index++) list2[index] = list1[index]; } Methods for Array Processing

30 Java Programming: From Problem Analysis to Program Design, Second Edition30 Parallel Arrays  Arrays are parallel if the corresponding components hold related information.

31 Java Programming: From Problem Analysis to Program Design, Second Edition31 Arrays of Objects  Can use arrays to manipulate objects.  Example: Create an array named array1 with N objects 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();

32 Java Programming: From Problem Analysis to Program Design, Second Edition32 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";

33 Java Programming: From Problem Analysis to Program Design, Second Edition33 Array of String Objects

34 Java Programming: From Problem Analysis to Program Design, Second Edition34 Clock[] arrivalTimeEmp = new Clock[100]; Arrays of Objects

35 Java Programming: From Problem Analysis to Program Design, Second Edition35 Instantiating Array Objects for (int j = 0; j < arrivalTimeEmp.length; j++) arrivalTimeEmp[j] = new Clock();

36 Java Programming: From Problem Analysis to Program Design, Second Edition36 arrivalTimeEmp[49].setTime(8, 5, 10); Instantiating Array Objects

37 Java Programming: From Problem Analysis to Program Design, Second Edition37 Arrays and Variable Length Parameter List  The syntax to declare a variable length formal parameter (list) is: dataType... identifier

38 Java Programming: From Problem Analysis to Program Design, Second Edition38 Arrays and Variable Length Parameter List public static double largest(double... numList) { double max; int index; if (numList.length != 0) { max = list[0]; for (index = 1; index < numList.length; index++) { if (max < numList [index]) max = numList [index]; } return max; } return 0.0; }

39 Java Programming: From Problem Analysis to Program Design, Second Edition39 Arrays and Variable Length Parameter List double num1 = largest(34, 56); double num2 = largest(12.56, 84, 92); double num3 = largest(98.32, 77, 64.67, 56); System.out.println(largest(22.50, 67.78, 92.58, 45, 34, 56)); double[] numberList = {18. 50, 44, 56.23, 17.89 92.34, 112.0, 77, 11, 22, 86.62); System.out.println(largest(numberList));

40 Java Programming: From Problem Analysis to Program Design, Second Edition40 foreach loop  The syntax to use this for loop to process the elements of an array is: for (dataType identifier : arrayName) statements  identifier is a variable, and the data type of identifier is the same as the data type of the array components.

41 Java Programming: From Problem Analysis to Program Design, Second Edition41 foreach loop sum = 0; for (double num : list) sum = sum + num;  The for statement in Line 2 is read for each num in list. The identifier num is initialized to list[0]. In the next iteration, the value of num is list[1], and so on. for (double num : numList) { if (max < num) max = num; }

42 Java Programming: From Problem Analysis to Program Design, Second Edition42 Two-Dimensional Arrays  Data is sometimes in table form (difficult to represent using a one-dimensional array).  To declare/instantiate a two-dimensional array: dataType[ ][ ] arrayName = new dataType[intExp1][intExp2];  To access a component of a two-dimensional array: arrayName[indexExp1][indexExp2];  intExp1, intExp2 >= 0  indexExp1 = row position  indexExp2 = column position

43 Java Programming: From Problem Analysis to Program Design, Second Edition43 Two-Dimensional Arrays  Can specify different number of columns for each row (ragged arrays).  Three ways to process two-dimensional arrays:  Entire array.  Particular row of array (row processing).  Particular column of array (column processing).  Processing algorithms is similar to processing algorithms of one-dimensional arrays.

44 Java Programming: From Problem Analysis to Program Design, Second Edition44 double[][]sales = new double[10][5]; Two-Dimensional Arrays

45 Java Programming: From Problem Analysis to Program Design, Second Edition45 Accessing Two-Dimensional Array Components

46 Java Programming: From Problem Analysis to Program Design, Second Edition46 Two-Dimensional Arrays: Special Cases

47 Java Programming: From Problem Analysis to Program Design, Second Edition47 Two-Dimensional Arrays: Processing Initialization for (row = 0; row < matrix.length; row++) for (col = 0; col < matrix[row].length; col++) matrix[row][col] = 10; Print for (row = 0; row < matrix.length; row++) { for (col = 0; col < matrix[row].length; col++) System.out.printf("%7d", matrix[row][col]); System.out.println(); }

48 Java Programming: From Problem Analysis to Program Design, Second Edition48 Input for (row = 0; row < matrix.length; row++) for (col = 0; col < matrix[row].length; col++) matrix[row][col] = console.nextInt(); 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); } Two-Dimensional Arrays: Processing

49 Java Programming: From Problem Analysis to Program Design, Second Edition49 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); } Two-Dimensional Arrays: Processing

50 Java Programming: From Problem Analysis to Program Design, Second Edition50 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); } Two-Dimensional Arrays: Processing

51 Java Programming: From Problem Analysis to Program Design, Second Edition51 Largest Element in Each Column for (col = 0; col < matrix[0].length; col++) { largest = matrix[0][col]; for (row = 1; row < matrix.length; row++) if (largest < matrix[row][col]) largest = matrix[row][col]; System.out.println("The largest element of col " + (col + 1) + " = " + largest); } Two-Dimensional Arrays: Processing

52 Java Programming: From Problem Analysis to Program Design, Second Edition52 Multidimensional Arrays  Can define three-dimensional arrays or n-dimensional arrays (n can be any number).  Syntax to declare and instantiate array: d ataType[][]…[] 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

53 Java Programming: From Problem Analysis to Program Design, Second Edition53 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;

54 Java Programming: From Problem Analysis to Program Design, Second Edition54 Programming Example: Text Processing  Program: Reads given text; outputs the text as is; prints number of lines and number of times each letter appears in text.  Input: File containing text to be processed.  Output: File containing text, number of lines, number of times each letter appears in text.

55 Java Programming: From Problem Analysis to Program Design, Second Edition55 Programming Example Solution: Text Processing  An array of 26 representing the letters in the alphabet.  Three methods:  copyText  characterCount  writeTotal  Value in appropriate index is incremented using methods and depends on character read from text.

56 Java Programming: From Problem Analysis to Program Design, Second Edition56 Chapter Summary  Arrays  Definition  Uses  Different arrays  One-dimensional  Two-dimensional  Multidimensional (n-dimensional)  Arrays of objects  Parallel arrays

57 Java Programming: From Problem Analysis to Program Design, Second Edition57 Chapter Summary  Declaring arrays  Instantiating arrays  Processing arrays  Entire array  Row processing  Column processing  Common operations and methods performed on arrays  Manipulating data in arrays


Download ppt "Chapter 9: Arrays J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design, Second Edition Second Edition."

Similar presentations


Ads by Google