Java Programming: Chapter 9: Arrays

Slides:



Advertisements
Similar presentations
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved Fall 2013.
Advertisements

Arrays. What is an array An array is used to store a collection of data It is a collection of variables of the same type.
Chapter 10 Introduction to Arrays
CHAPTER 10 ARRAYS II Applications and Extensions.
1 Lecture 21:Arrays and Strings(cont.) Introduction to Computer Science Spring 2006.
1 Lecture 20:Arrays and Strings Introduction to Computer Science Spring 2006.
1 Arrays  Arrays are objects that help us organize large amounts of information  Chapter 8 focuses on: array declaration and use passing arrays and array.
Java Programming: From Problem Analysis to Program Design, 3e Chapter 9 Arrays.
Chapter 9: Arrays and Strings
Chapter 9: Arrays and Strings
Chapter 9: Arrays and Strings
Chapter 7: User-Defined Methods
Chapter 8 Arrays and Strings
Arrays. Objectives Learn about arrays Explore how to declare and manipulate data into arrays Learn about “array index out of bounds” Become familiar with.
Chapter 9 Introduction to Arrays
Arrays (Part II). Two- and Multidimensional Arrays Two-dimensional array: collection of a fixed number of components (of the same type) arranged in two.
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved Chapter 7 Multidimensional.
One Dimensional Array. Introduction to Arrays Primitive variables are designed to hold only one value at a time. Arrays allow us to create a collection.
Chapter 8 Arrays and Strings
Arrays Part 9 dbg. Arrays An array is a fixed number of contiguous memory locations, all containing data of the same type, identified by one variable.
1 Chapter 8 Multi-Dimensional Arrays. 2 1-Dimentional and 2-Dimentional Arrays In the previous chapter we used 1-dimensional arrays to model linear collections.
Arrays Module 6. Objectives Nature and purpose of an array Using arrays in Java programs Methods with array parameter Methods that return an array Array.
Programming Fundamentals I (COSC-1336), Lecture 8 (prepared after Chapter 7 of Liang’s 2011 textbook) Stefan Andrei 4/23/2017 COSC-1336, Lecture 8.
Java Programming: From Problem Analysis to Program Design, 4e
ARRAYS 1 TOPIC 8 l Array Basics l Arrays and Methods l Programming with Arrays Arrays.
Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1 Chapter 8 Multidimensional Arrays.
Chapter 9: Arrays J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design, Second Edition Second Edition.
Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1 Chapter 8 Multidimensional Arrays Lecture.
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved Chapter 7 Multidimensional.
Arrays Chapter 8. What if we need to store test scores for all students in our class. We could store each test score as a unique variable: int score1.
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved
C++ Programming: From Problem Analysis to Program Design, Second Edition1 Objectives In this chapter you will: Learn about the pointer data type and pointer.
C++ Programming: From Problem Analysis to Program Design, Fifth Edition Arrays.
8-1 Chapter 8: Arrays Arrays are objects that help us organize large amounts of information Today we will focuses on: –array declaration and use –bounds.
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved Chapter 7 Multidimensional.
M180: Data Structures & Algorithms in Java Arrays in Java Arab Open University 1.
OBJECTS FOR ORGANIZING DATA -- As our programs get more sophisticated, we need assistance organizing large amounts of data. : array declaration and use.
1 Topic: Array Topic: Array. 2 Arrays Arrays In this chapter, we will : Learn about arrays Learn about arrays Explore how to declare and manipulate data.
UniMAP Sem2-10/11 DKT121: Fundamental of Computer Programming1 Arrays.
Chapter 8 Arrays. A First Book of ANSI C, Fourth Edition2 Introduction Atomic variable: variable whose value cannot be further subdivided into a built-in.
CiS 260: App Dev I. 2 Introduction to Arrays n An array is an object that contains a collection of components (_________) of the same data type. n For.
1 Chapter 9 Arrays Java Programming from Thomson Course Tech, adopted by kcluk.
Chapter 5: ARRAYS ARRAYS. Why Do We Need Arrays? Java Programming: From Problem Analysis to Program Design, 4e 2  We want to write a Java program that.
CiS 260: App Dev I. 2 Introduction to Arrays n An array is an object that contains a collection of components (_________) of the same data type. n For.
Opening Input/Output Files ifstream infile; ofstream outfile; char inFileName[40]; char outFileName[40]; coutinFileName;
Arrays Declaring arrays Passing arrays to functions Searching arrays with linear search Sorting arrays with insertion sort Multidimensional arrays Programming.
1 Chapter 9 Arrays Java Programming from Thomson Course Tech, adopted by kcluk.
Chapter 9 Arrays. Chapter Objectives Learn about arrays Explore how to declare and manipulate data into arrays Understand the meaning of “array index.
Chapter 9 Arrays. Chapter Objectives Learn about arrays Explore how to declare and manipulate data into arrays Understand the meaning of “array index.
Chapter 9 Introduction to Arrays Fundamentals of Java.
Chapter 7 Arrays…. 7-2 Arrays An array is an ordered list of values An array of size N is indexed from.
Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1 Chapter 7 Multidimensional Arrays.
1 Why do we need arrays? Problem - Input 5 test scores => int test1,test2,test3,test4,test5 100 test scores? 10,000 employees? A structured data type is.
KUKUM-06/07 EKT120: Computer Programming 1 Week 6 Arrays-Part 1.
LESSON 8: INTRODUCTION TO ARRAYS. Lesson 8: Introduction To Arrays Objectives: Write programs that handle collections of similar items. Declare array.
Array 1 ARRAY. array 2 Learn about arrays. Explore how to declare and manipulate data into arrays. Understand the meaning of “array index out of bounds.”
1 Arrays and Variable Length Parameter List  The syntax to declare a variable length formal parameter (list) is: dataType... identifier.
Chapter 9: Arrays J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design,
1 Chapter 7 Multidimensional Arrays. 2 Motivations You can use a two-dimensional array to represent a matrix or a table.
Chapter VII: Arrays.
Chapter 8: Arrays Starting Out with C++ Early Objects Ninth Edition
Computer Programming BCT 1113
Arrays We often want to organize objects or primitive data in a way that makes them easy to access and change. An array is simple but powerful way to.
Chapter 7 Multidimensional Arrays
Lecture 9 Objectives Learn about arrays.
Chapter 8 Multidimensional Arrays
Chapter 7 Multidimensional Arrays
Java Programming: Program Design Including Data Structures
Chapter 8 Multidimensional Arrays
Arrays.
Presentation transcript:

Java Programming: Chapter 9: Arrays From Problem Analysis to Program Design, Second Edition

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.

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.

Motivation import java.util.*; Enter 5 numbers: 3 6 8 9 0 Sum = 26 Numbers is reverse = 0 9 8 6 3 Write a program to read 5 numbers, find their sum and print them in reverse order. import java.util.*; public class RevOrder{ static Scanner console = new Scanner(System.in); public static void main(String[] args){ int item0, item1, item2, item3, item4; int sum; System.out.println("Enter 5 numbers: "); item0=console.nextInt(); item1=console.nextInt(); item2=console.nextInt(); item3=console.nextInt(); item4=console.nextInt(); sum = item0+item1+item2+item3+item4; System.out.println("Sum = " + sum); System.out.print("Numbers is reverse = "); System.out.println(item4+" "+item3+" "+item2+" "+item1+" "+item0); } }

Motivation Write a program to read 100 numbers, find their sum and print them in reverse order ?????

Motivation Note the following in the preceding program: 5 variables must be declared. All variables are of type int. Variables name (item0  item4); Instead of having to use a large number of individual and unconnected variables, we can use a single data structure that combines them.

Motivation In this chapter, we will examine: How to store collections of items and access these items using one variable name given to the collection. The data structure that lets you do all of theses things in java is called array.

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.

One-Dimensional Arrays Syntax to declare an array: dataType[ ] arrayName; In java, an array is an object: It is a reference variable. To store data we must instantiate the array object using new operator. Syntax to instantiate an array object: arrayName = new dataType[intExp] Where intExp = number of components in array >= 0

One-Dimensional Arrays Declaration with instantiation: dataType[ ] arrayName = new dataType[intExp] Declaring more than one array of the same type: dataType[ ] arrayName1, arrayName2; Syntax to access an array component: arrayName[indexExp] intExp = number of components in array >= 0 0 <= indexExp < intExp

Array num Example9-1 The statement: int[] num = new int[5]; Declares and creates the array num of 5 components. Each component is of type int. The components are accessed as: num[0], num[1],num[2],num[3],num[4]

Array num int[] num = new int[5]; Why all the values = 0 ???????????

Array num When an array is instantiated. Java automatically initializes its components to their default values. For example, numeric arrays are initialized to 0. What are string, char array initialized to?

Alternate Ways to Declare an array int list[]; // here [] is after list not int But take care, what is the difference here: int alpha[], beta; int[] gamma, delta; It is recommended that you declare arrays as int[].

Array list int [] list = new int[10];

Array list

Specifying Array Size During Program Execution int arraySize; System.out.print("Enter the size of the array: "); arraySize = console.nextInt(); System.out.println(); int[] list = new int[arraySize]; Arrays that are created during program execution are called dynamic arrays.

Array Initialization During Declaration 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.

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. This statement creates the array list of six components and initializes the components using the values given. int[] list = {10, 20, 30, 40, 50, 60}; Here, list.length is 6.

Arrays and the Instance Variable length 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; The value of numList.length is still 10. You can store the number of filled elements, that is, the actual number of elements, in the array in a variable, SAYnoOfElement. It is a common practice for a program to keep track of the number of filled elements in an array.

Processing One-Dimensional Arrays Loops used to step through elements in array and perform operations. int[] list = new int[100]; int i; //process list[i], the (i + 1)th element of list for (i = 0; i < list.length; i++) //inputting data to list list[i] = console.nextInt(); //outputting data from list System.out.print(list[i] + " "); Remember to start loop counter from 0 because Array index starts from 0.

Arrays Some operations on arrays: Initialize Input data Output stored data Find largest/smallest/sum/average of elements Example 9_3 double[] sales = new double[10]; int index; double largestSale, sum, average;

Code to Initialize Array to Specific Value (10.00) for (index = 0; index < sales.length; index++) sales[index] = 10.00; Note: .length NOT .length() It is a variable not a method.

Code to Read Data into Array for (index = 0; index < sales.length; index++) sales[index] = console.nextDouble();

Code to Print Array for (index = 0; index < sales.length; index++) System.out.print(sales[index] + " ");

Code to Find Sum and Average of Array for (index = 0; index < sales.length; index++) sum = sum + sales[index]; if (sales.length != 0) average = sum / sales.length; else average = 0.0;

Determining Largest Element in Array maxIndex = 0; for (index = 1; index < sales.length; index++) if (sales[maxIndex] < sales[index]) maxIndex = index; largestSale = sales[maxIndex];

Determining Largest Element in Array

Determining Largest Element in Array After for loop executes, maxIndex=7  largestSale=sales[maxIndex]= 98.23. Exercises: How to find the smallest element in an array???? Rewrite the program that we discussed in the beginning of this chapter: the RevOrd class.

Array Index Out of Bounds An array is in bounds if: 0 <= index <= arraySize – 1 If index < 0 or index > arraySize-1: ArrayIndexOutOfBoundsException exception is thrown. If the program does not handle this exception, the program terminates.

Base address: Base address: is the address (memory location) of the first component in an array. Base address of list is the address of list[0]. Value of variable list is the base address of the array= the address of list[0]. When you pass an array as a parameter, the base address of the actual array is passed to the formal parameter.

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

The Assignment Operators and Arrays int listA={5,10,15,20,25,30,35}; int listB=new int[listA.length];

The Assignment Operators and Arrays You can use the assignment operator(=) to assign listA to listB. However, the result obtained might not be what you expect. For example: listA = listB; You expect: element of listA are copied to listB. That is wrong, listA is a reference variable, both listA and listB refer to the same array.

The Assignment Operators and Arrays

The Assignment Operators and Arrays To copy listA components to listB: for (int index = 0; index < listA.length; index++) listB[index] = listA[index];

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.

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 true; } if (isEqualArrays(listA, listB)) ...

Methods for Array Processing Example 9_5 public static void fillArray(int[] list, int noOfElements) { int index; for (index = 0; index < noOfElements; index++) list[index] = console.nextInt(); }

Methods for Array Processing 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 sum = 0; sum = sum + list[index]; return sum;

Methods for Array Processing 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, for (index = 0; index < noOfElements; index++) list2[index] = list1[index];

You MUST Check example9_6 for calling these methods. Methods for Array Processing You MUST Check example9_6 for calling these methods.

Parallel Arrays Arrays are parallel if the corresponding components hold related information. Example: You need to keep track of 50 students ID with their grades. int [] studentId = new int[50]; char[] courseGrade = new char[50]; studentId[3] and courseGrade[3] holds the data for the same student. studentId courseGrade 2345 A 4563 C 4590 C 2404 B

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

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 String Objects

Array of String Objects You can use String methods to work with the objects of nameList. nameList[0].equals(“Amanda Green”) // true nameList[4].substring(0,5) //Mandy

Clock[] arrivalTimeEmp = new Clock[100]; Arrays of Objects of Other Classes Clock[] arrivalTimeEmp = new Clock[100];

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

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

Arrays and Variable Length Parameter List The syntax to declare a variable length formal parameter (list) is: dataType ... identifier

Arrays and Variable Length Parameter List public static double largest(double ... numList) { double max; int index; if (numList.length != 0) max = numList[0]; for (index = 1; index < numList.length; index++) if (max < numList [index]) max = numList [index]; } return max; return 0.0;

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

Arrays and Variable Length Parameter List Rules to follow when using a variable length formal parameter list: A method can have both a variable length formal parameter and other formal parameter. public static void myMethod (String name, double num, int … intList) A method can have at most one variable length formal parameter. If a method has both a variable length formal parameter and other formal parameter, then the variable length formal parameter must be the last).

foreach loop This form of for is called a foreach loop. The most recent version of Java provides a special type of for loop to process the elements of an objects such as an array. 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. This form of for is called a foreach loop.

foreach loop sum = 0; //line1 for (double num : list) //line2 sum = sum + num; //line3 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; }

Two-Dimensional Arrays inStock [Red] [Brown] [Black] [White] [Gray] [GM] 10 4 95 3 5 [Ford] 6 [Toyota] 7 [BMW] 8 2 [Nissan] 33 [Volvo] 1 9

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

double[][]sales = new double[10][5]; Two-Dimensional Arrays double[][]sales = new double[10][5];

Accessing Two-Dimensional Array Components =25.75

Two-Dimensional Arrays int [][] matrix = new int[20][15]; 20 rows 15 columns matrix.length = 20 //number of rows Each row of matrix is 1-D array matrix.[0].length = 15 //# of columns in 1st row matrix.[1].length = 15 // # of columns in 2nd row

Two-Dimensional Arrays: Special Cases Can specify different number of columns for each row (ragged arrays). In this case, each row must be instantiated separately.

Two-Dimensional Arrays: Special Cases To create this array, first we create 1-D array board of 5 rows: int[] board = new int[5]; board[0] = new int[6]; board[1] = new int[2]; board[2] = new int[2]; board[3] = new int[3]; board[4] = new int[4];

Two Dimensional Array Initialization During Declaration int[][] board = {{2,3,1} , {15,25,13} , {20, 4, 7}}; board [0] [1] [2] 2 3 1 15 25 13 20 4 7 What is the array created after this statement: int[][] table = {{2,3,1,5} , {15,25} , {4, 23, 45}};

Processing Two Dimensional Array 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. The following declarations are used for our examples: static final int ROWS=7; static final int COLUMNS=6; int[][] matrix = new int [ROWS][COLUMNS]; int row, col, sum, largest, temp;

Processing Two Dimensional Array matrix [0] [1] [2] [4] [5] [0] [1] [2] [3] [4] [5] [6] matrix.length =7 // == ROWS matrix[0].length=matrix[1].length, … , matrix[6].length // == COLUMNS

Two-Dimensional Arrays: Processing Loop for processing row 5 elements: for (col=0; col < matrix[5].length; col++) //process matrix[5][col] Loop for processing column 2 elements: for (row=0; row < matrix.length; row++) //process matrix[row][2]

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

Two-Dimensional Arrays: Processing 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 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 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 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); }

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 = non-negative integers

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;

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.

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.

Chapter Summary Arrays Different arrays Definition Uses One-dimensional Two-dimensional Multidimensional (n-dimensional) Arrays of objects Parallel arrays

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