Chapter 6 Single-Dimensional Arrays. Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All rights reserved.

Similar documents
Opening Problem EXAMPLE. 1. Read one hundred numbers, 2. compute their average, and 3. find out how many numbers are above the average.

Chapter 6 Arrays. Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved.

Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved

Module 7: Arrays (Single Dimensional)

Announcements. PS 4 is ready, due next Thursday, 9:00pm. Midterm Exam 1: 10/14 (Fri), 9:00am-10:53am

CS1150 Principles of Computer Science Arrays

CS1150 Principles of Computer Science Arrays

Chapter 7 Single-Dimensional Arrays

Chapter 7: Single-Dimensional Arrays. Declaring Array Variables. Creating Arrays. Declaring and Creating in One Step.

CS115 Principles of Computer Science

Pearson Education Limited Edinburgh Gate Harlow Essex CM20 2JE England and Associated Companies throughout the world

Arrays. Introduction to OOP with Java. Lecture 06: Introduction to OOP with Java - AKF Sep AbuKhleiF - 1

Java-Array. This tutorial introduces how to declare array variables, create arrays, and process arrays using indexed variables.

14. Array Basics. Java. Summer 2008 Instructor: Dr. Masoud Yaghini

Array. Lecture 12. Based on Slides of Dr. Norazah Yusof

15. Arrays and Methods. Java. Summer 2008 Instructor: Dr. Masoud Yaghini

Lecture #8-10 Arrays

Chapter 6 SINGLE-DIMENSIONAL ARRAYS

Arrays. Eng. Mohammed Abdualal

Passing Array to Methods

array Indexed same type

Chapter 7 Multidimensional Arrays. Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved.

Object Oriented Programming. Java-Lecture 6 - Arrays

Chapter 8 Multi-Dimensional Arrays

Introduction to Java & Fundamental Data Types

Java Programming. MSc Induction Tutorials Stefan Stafrace PhD Student Department of Computing

Chapter 7 Multidimensional Arrays

Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved

Computer programming Code exercises [1D Array]

Lecture 2 Arrays, Searching and Sorting (Arrays, multi-dimensional Arrays)

1 class Lecture5 { 2 3 "Arrays" 4. Zheng-Liang Lu Java Programming 136 / 174

LAB 13: ARRAYS (ONE DIMINSION)

Lecture 6 Sorting and Searching

Java, Arrays and Functions Recap. CSE260, Computer Science B: Honors Stony Brook University

Top-down programming design

Last Class. Introduction to arrays Array indices Initializer lists Making an array when you don't know how many values are in it

Chapter 6 Single-dimensional Arrays

Recapitulate CSE160: Java basics, types, statements, arrays and methods

1. Which of the following is the correct expression of character 4? a. 4 b. "4" c. '\0004' d. '4'

Declaring Array Variable

Exam 2. CSC 121 MW Class. Lecturer: Howard Rosenthal. April 26, 2017

SCALA ARRAYS. Following picture represents array mylist. Here, mylist holds ten double values and the indices are from 0 to 9.

Exam 2. CSC 121 MW Class. Lecturer: Howard Rosenthal. April 25, 2016

Chapter 4 Loops. Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved.

Object oriented programming. Instructor: Masoud Asghari Web page: Ch: 3

CS1150 Principles of Computer Science Loops (Part II)

Chapter 6. Arrays. Java Actually: A Comprehensive Primer in Programming

Chapter 8 Multidimensional Arrays

Example. Password generator

Problems with simple variables

CS 171: Introduction to Computer Science II. Arrays. Li Xiong

CE221 Programming in C++ Part 2 References and Pointers, Arrays and Strings

CS313D: ADVANCED PROGRAMMING LANGUAGE

Computer Programming, I. Laboratory Manual. Final Exam Solution

Variables and Java vs C++

Introduction. Data in a table or a matrix can be represented using a two-dimensional array. For example:

Java How to Program, 10/e. Copyright by Pearson Education, Inc. All Rights Reserved.

Announcements. PS 3 is due Thursday, 10/6. Midterm Exam 1: 10/14 (Fri), 9:00am-10:53am

Method OverLoading printf method Arrays Declaring and Using Arrays Arrays of Objects Array as Parameters

Opening Problem. Find the sum of integers from 1 to 10, from 20 to 30, and from 35 to 45, respectively.

How to swap values of two variables without tmp? However, this naive algorithm is biased. 1

Opening Problem. Find the sum of integers from 1 to 10, from 20 to 30, and from 35 to 45, respectively.

Java Coding 3. Over & over again!

Computer Programming, I. Laboratory Manual. Experiment #2. Elementary Programming

Chapter 1-9, 12-13, 18, 20, 23 Review Slides. What is a Computer?

Arrays and Lists CSC 121 Fall 2014 Howard Rosenthal

Spring 2010 Java Programming

Cloning Arrays. In practice, one might duplicate an array for some reason. One could attempt to use the assignment statement (=), for example,

Tutorial 11. Exercise 1: CSC111 Computer Programming I. A. Write a code snippet to define the following arrays:

COE318 Lecture Notes Week 4 (Sept 26, 2011)

2. Each element of an array is accessed by a number known as a(n) a. a. subscript b. size declarator c. address d. specifier

All answers will be posted on web site, and most will be reviewed in class.

Arrays and Lists CSC 121 Fall 2015 Howard Rosenthal

CS 112 Introduction to Computing II. Wayne Snyder Computer Science Department Boston University

Introduction to Programming Using Java (98-388)

Arrays. Chapter The Java Array Object. Goals

Arrays and functions Multidimensional arrays Sorting and algorithm efficiency

CS2401 QUIZ 5 February 26, questions / 20 points / 20 minutes NAME:..

Arrays: An array is a data structure that stores a sequence of values of the same type. The data type can be any of Java s primitive types:

Wentworth Institute of Technology. Engineering & Technology WIT COMP1000. Arrays

Arrays and Lists Review CSC 123 Fall 2018 Howard Rosenthal

Research Group. 3: Loops, Arrays

Cloning Arrays. In practice, one might duplicate an array for some reason. One could attempt to use the assignment statement (=), for example,

Last Class. More on loops break continue A bit on arrays

Lecture 5: Methods CS2301

Chapter 12: Arrays Think Java: How to Think Like a Computer Scientist by Allen B. Downey

3. Convert 2E from hexadecimal to decimal. 4. Convert from binary to hexadecimal

What is a Computer? Chapter 1-9, 12-13, 18, 20, 23 Review Slides

Basic computer skills such as using Windows, Internet Explorer, and Microsoft Word. Chapter 1 Introduction to Computers, Programs, and Java

Object-oriented programming. and data-structures CS/ENGRD 2110 SUMMER 2018

Chapter 2. Elementary Programming

Arrays and Lists CSC 121 Fall 2016 Howard Rosenthal

Exceptions, Templates, and the STL

Agenda CS121/IS223. Reminder. Object Declaration, Creation, Assignment. What is Going On? Variables in Java

Principles of Computer Science

Chapter 2 Elementary Programming

Arrays. Lecture 11 CGS 3416 Fall October 26, 2015

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc.

AP Computer Science Lists The Array type

CSC 307 DATA STRUCTURES AND ALGORITHM ANALYSIS IN C++ SPRING 2011

Transcription:

Chapter 6 Single-Dimensional Arrays rights reserved. 1 Opening Problem Read one hundred numbers, compute their average, and find out how many numbers are above the average. Solution AnalyzeNumbers rights reserved. 2

Objectives To describe why arrays are necessary in programming ( 7.1). To declare array reference variables and create arrays ( 7.2.1 7.2.2). To obtain array size using arrayrefvar.length and know default values in an array ( 7.2.3). To access array elements using indexes ( 7.2.4). To declare, create, and initialize an array using an array initializer ( 7.2.5). To program common array operations (displaying arrays, summing all elements, finding the minimum and maximum elements, random shuffling, and shifting elements) ( 7.2.6). To simplify programming using the foreach loops ( 7.2.7). To apply arrays in application development (AnalyzeNumbers, DeckOfCards) ( 7.3 7.4). To copy contents from one array to another ( 7.5). To develop and invoke methods with array arguments and return values ( 7.6 7.8). To define a method with a variable-length argument ( 7.9). To search elements using the linear ( 7.10.1) or binary ( 7.10.2) search algorithm. To sort an array using the selection sort approach ( 7.11). To use the methods in the java.util.arrays class ( 7.12). To pass arguments to the main method from the command line ( 7.13). rights reserved. 3 Introducing Arrays Array is a data structure that represents a collection of the same types of data. rights reserved. 4

Declaring Array Variables datatype[] arrayrefvar; Example: double[] mylist; datatype arrayrefvar[]; // This style is allowed, but not preferred Example: double mylist[]; rights reserved. 5 Creating Arrays arrayrefvar = new datatype[arraysize]; Example: mylist = new double[10]; mylist[0] references the first element in the array. mylist[9] references the last element in the array. rights reserved. 6

Declaring and Creating in One Step datatype[] arrayrefvar = new datatype[arraysize]; double[] mylist = new double[10]; datatype arrayrefvar[] = new datatype[arraysize]; double mylist[] = new double[10]; rights reserved. 7 The Length of an Array Once an array is created, its size is fixed. It cannot be changed. You can find its size using arrayrefvar.length For example, mylist.length returns 10 rights reserved. 8

Default Values When an array is created, its elements are assigned the default value of 0 for the numeric primitive data types, '\u0000' for char types, and false for boolean types. rights reserved. 9 Indexed Variables The array elements are accessed through the index. The array indices are 0-based, i.e., it starts from 0 to arrayrefvar.length-1. In the example in Figure 6.1, mylist holds ten double values and the indices are from 0 to 9. Each element in the array is represented using the following syntax, known as an indexed variable: arrayrefvar[index]; rights reserved. 10

Using Indexed Variables After an array is created, an indexed variable can be used in the same way as a regular variable. For example, the following code adds the value in mylist[0] and mylist[1] to mylist[2]. mylist[2] = mylist[0] + mylist[1]; rights reserved. 11 Array Initializers Declaring, creating, initializing in one step: double[] mylist = {1.9, 2.9, 3.4, 3.5; This shorthand syntax must be in one statement. rights reserved. 12

Declaring, creating, initializing Using the Shorthand Notation double[] mylist = {1.9, 2.9, 3.4, 3.5; This shorthand notation is equivalent to the following statements: double[] mylist = new double[4]; mylist[0] = 1.9; mylist[1] = 2.9; mylist[2] = 3.4; mylist[3] = 3.5; rights reserved. 13 CAUTION Using the shorthand notation, you have to declare, create, and initialize the array all in one statement. Splitting it would cause a syntax error. For example, the following is wrong: double[] mylist; mylist = {1.9, 2.9, 3.4, 3.5; rights reserved. 14

Trace Program with Arrays Declare array variable values, create an array, and assign its reference to values public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; After the array is created 0 0 1 0 2 0 3 0 4 0 rights reserved. 15 Trace Program with Arrays i becomes 1 public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; After the array is created 0 0 1 0 2 0 3 0 4 0 rights reserved. 16

Trace Program with Arrays i (=1) is less than 5 public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; After the array is created 0 0 1 0 2 0 3 0 4 0 rights reserved. 17 Trace Program with Arrays After this line is executed, value[1] is 1 public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; After the first iteration 0 0 1 1 2 0 3 0 4 0 rights reserved. 18

Trace Program with Arrays After i++, i becomes 2 public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; After the first iteration 0 0 1 1 2 0 3 0 4 0 rights reserved. 19 Trace Program with Arrays public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; i (= 2) is less than 5 After the first iteration 0 0 1 1 2 0 3 0 4 0 rights reserved. 20

Trace Program with Arrays After this line is executed, values[2] is 3 (2 + 1) public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; After the second iteration 0 0 1 1 2 3 3 0 4 0 rights reserved. 21 Trace Program with Arrays After this, i becomes 3. public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; After the second iteration 0 0 1 1 2 3 3 0 4 0 rights reserved. 22

Trace Program with Arrays i (=3) is still less than 5. public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; After the second iteration 0 0 1 1 2 3 3 0 4 0 rights reserved. 23 Trace Program with Arrays After this line, values[3] becomes 6 (3 + 3) public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; After the third iteration 0 0 1 1 2 3 3 6 4 0 rights reserved. 24

Trace Program with Arrays After this, i becomes 4 public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; After the third iteration 0 0 1 1 2 3 3 6 4 0 rights reserved. 25 Trace Program with Arrays i (=4) is still less than 5 public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; After the third iteration 0 0 1 1 2 3 3 6 4 0 rights reserved. 26

Trace Program with Arrays After this, values[4] becomes 10 (4 + 6) public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; After the fourth iteration 0 0 1 1 2 3 3 6 4 10 rights reserved. 27 Trace Program with Arrays After i++, i becomes 5 public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; After the fourth iteration 0 0 1 1 2 3 3 6 4 10 rights reserved. 28

Trace Program with Arrays i ( =5) < 5 is false. Exit the loop public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; After the fourth iteration 0 0 1 1 2 3 3 6 4 10 rights reserved. 29 Trace Program with Arrays After this line, values[0] is 11 (1 + 10) public class Test { public static void main(string[] args) { int[] values = new int[5]; for (int i = 1; i < 5; i++) { values[i] = i + values[i-1]; values[0] = values[1] + values[4]; 0 1 2 3 4 11 1 3 6 10 rights reserved. 30

Processing Arrays See the examples in the text. 1. (Initializing arrays with input values) 2. (Initializing arrays with random values) 3. (Printing arrays) 4. (Summing all elements) 5. (Finding the largest element) 6. (Finding the smallest index of the largest element) 7. (Random shuffling) 8. (Shifting elements) rights reserved. 31 Initializing arrays with input values java.util.scanner input = new java.util.scanner(system.in); System.out.print("Enter " + mylist.length + " values: "); for (int i = 0; i < mylist.length; i++) mylist[i] = input.nextdouble(); rights reserved. 32

Initializing arrays with random values for (int i = 0; i < mylist.length; i++) { mylist[i] = Math.random() * 100; rights reserved. 33 Printing arrays for (int i = 0; i < mylist.length; i++) { System.out.print(myList[i] + " "); rights reserved. 34

Summing all elements double total = 0; for (int i = 0; i < mylist.length; i++) { total += mylist[i]; rights reserved. 35 Finding the largest element double max = mylist[0]; for (int i = 1; i < mylist.length; i++) { if (mylist[i] > max) max = mylist[i]; rights reserved. 36

Random shuffling you need to randomly reorder the elements in an array. This is called a shuffling. To accomplish this, for each element mylist[i], randomly generate an index j and swap mylist[i] with mylist[j], as follows: for (int i = 0; i < mylist.length - 1; i++) { // Generate an index j randomly int j = (int)(math.random() * mylist.length); // Swap mylist[i] with mylist[j] double temp = mylist[i]; mylist[i] = mylist[j]; mylist[j] = temp; A random index i mylist [0] [1] [i] [j].... swap rights reserved. 37 Shifting Elements Sometimes you need to shift the elements left or right. Here is an example to shift the elements one position to the left and fill the last element with the first element: rights reserved. 38

Enhanced for Loop (for-each loop) JDK 1.5 introduced a new for loop that enables you to traverse the complete array sequentially without using an index variable. For example, the following code displays all elements in the array mylist: for (double value: mylist) System.out.println(value); In general, the syntax is for (elementtype value: arrayrefvar) { // Process the value You still have to use an index variable if you wish to traverse the array in a different order or change the elements in the array. rights reserved. 39 Analyze Numbers Read one hundred numbers, compute their average, and find out how many numbers are above the average. AnalyzeNumbers Run rights reserved. 40

Copying Arrays Often, in a program, you need to duplicate an array or a part of an array. In such cases you could attempt to use the assignment statement (=), as follows: 2 = 1; rights reserved. 41 Copying Arrays This statement (2 = 1;) does not copy the contents of the array referenced by 1 to 2, But, copies the reference value from 1 to 2. After this statement, 1 and 2 reference to the same array. The array previously referenced by 2 is no longer referenced; it becomes garbage, which will be automatically collected by the Java Virtual Machine. rights reserved. 42

Copying Arrays In Java, you can use assignment statements to copy primitive data type variables, but not arrays. There are three ways to copy arrays: Use a loop to copy individual elements one by one. Use the static arraycopy method in the System class. Use the clone method to copy arrays; this will be introduced in Chapter 14, Abstract Classes and Interfaces. rights reserved. 43 Copying Arrays (Using a loop) int[] sourcearray = {2, 3, 1, 5, 10; int[] targetarray = new int[sourcearray.length]; for (int i = 0; i < sourcearrays.length; i++) targetarray[i] = sourcearray[i]; rights reserved. 44

The arraycopy Utility arraycopy(sourcearray, src_pos, targetarray, tar_pos, length); Example: System.arraycopy(sourceArray, 0, targetarray, 0, sourcearray.length); rights reserved. 45 Passing Arrays to Methods public static void printarray(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); Invoke the method int[] = {3, 1, 2, 6, 4, 2; printarray(); Invoke the method printarray(new int[]{3, 1, 2, 6, 4, 2); Anonymous array rights reserved. 46

Pass By Value rights reserved. 47 Simple Example rights reserved. 48

Call Stack When invoking m(x, y), the values of x and y are passed to number and numbers. Since y contains the reference value to the array, numbers now contains the same reference value to the same array. rights reserved. 49 Call Stack When invoking m(x, y), the values of x and y are passed to number and numbers. Since y contains the reference value to the array, numbers now contains the same reference value to the same array. rights reserved. 50

Heap Heap Space required for the main method int[] y: reference int x: 1 5555 0 0 The arrays are stored in a heap. The JVM stores the array in an area of memory, called heap, which is used for dynamic memory allocation where blocks of memory are allocated and freed in an arbitrary order. rights reserved. 51 Passing Arrays as Arguments Objective: Demonstrate differences of passing primitive data type variables and array variables. TestPassArray Run rights reserved. 52

Example, cont. Stack Space required for the swap method n2: 2 n1: 1 Space required for the main method int[] a reference Invoke swap(int n1, int n2). The primitive type values in a[0] and a[1] are passed to the swap method. Heap a[1]: 2 a[0]: 1 The arrays are stored in a heap. Stack Space required for the swapfirsttwoinarray method int[] array reference Space required for the main method int[] a reference Invoke swapfirsttwoinarray(int[] array). The reference value in a is passed to the swapfirsttwoinarray method. rights reserved. 53 Returning an Array from a Method public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); rights reserved. 54

Trace the reverse Method int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; Declare and create array 0 0 0 0 0 0 rights reserved. 55 Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; i = 0 and j = 5 0 0 0 0 0 0 rights reserved. 56

Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; i (= 0) is less than 6 0 0 0 0 0 0 rights reserved. 57 Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; i = 0 and j = 5 Assign [0] to [5] 0 0 0 0 0 1 rights reserved. 58

Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; After this, i becomes 1 and j becomes 4 i <.length; i++, j--) { [j] = [i]; 0 0 0 0 0 1 rights reserved. 59 Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i (=1) is less than 6 i <.length; i++, j--) { [j] = [i]; 0 0 0 0 0 1 rights reserved. 60

Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; i = 1 and j = 4 Assign [1] to [4] 0 0 0 0 2 1 rights reserved. 61 Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; After this, i becomes 2 and j becomes 3 0 0 0 0 2 1 rights reserved. 62

Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; i (=2) is still less than 6 0 0 0 0 2 1 rights reserved. 63 Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; i = 2 and j = 3 Assign [i] to [j] 0 0 0 3 2 1 rights reserved. 64

Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; After this, i becomes 3 and j becomes 2 0 0 0 3 2 1 rights reserved. 65 Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; i (=3) is still less than 6 0 0 0 3 2 1 rights reserved. 66

Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; i = 3 and j = 2 Assign [i] to [j] 0 0 4 3 2 1 rights reserved. 67 Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; After this, i becomes 4 and j becomes 1 0 0 4 3 2 1 rights reserved. 68

Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; i (=4) is still less than 6 0 0 4 3 2 1 rights reserved. 69 Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; i = 4 and j = 1 Assign [i] to [j] 0 5 4 3 2 1 rights reserved. 70

Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; After this, i becomes 5 and j becomes 0 0 5 4 3 2 1 rights reserved. 71 Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; i (=5) is still less than 6 0 5 4 3 2 1 rights reserved. 72

Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; i = 5 and j = 0 Assign [i] to [j] 6 5 4 3 2 1 rights reserved. 73 Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; After this, i becomes 6 and j becomes -1 6 5 4 3 2 1 rights reserved. 74

Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; i (=6) < 6 is false. So exit the loop. 6 5 4 3 2 1 rights reserved. 75 Trace the reverse Method, cont. int[] 1 = {1, 2, 3, 4, 5, 6; int[] 2 = reverse(1); public static int[] reverse(int[] ) { int[] = new int[.length]; i <.length; i++, j--) { [j] = [i]; Return 2 6 5 4 3 2 1 rights reserved. 76

Problem: Counting Occurrence of Each Letter Generate 100 lowercase letters randomly and assign to an array of characters. Count the occurrence of each letter in the array. (a) Executing createarray in Line 6 Stack Space required for the createarray method char[] chars: ref Space required for the main method char[] chars: ref Heap Array of 100 characters (b) After exiting createarray in Line 6 Stack Space required for the main method char[] chars: ref Heap Array of 100 characters CountLettersInArray Run rights reserved. 77 Problem: Calculator Objective: Write a program that will perform binary operations on integers. The program receives three parameters: an operator and two integers. java Calculator 2 + 3 java Calculator 2-3 Calculator Run java Calculator 2 / 3 java Calculator 2. 3 rights reserved. 78