Chapter07_Lecture2
Chapter07_Lecture2
Programming
Lecture 2
Chapter 7
©2016 Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Chapter Topics
©20167-2
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Chapter Topics
©20167-3
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Introduction to Arrays
int[] numbers;
• The next step creates the array and assigns its address to the
numbers variable.
// Create a new array that will hold 6 integers.
20 0 0 0 0 0
numbers[0] numbers[1] numbers[2] numbers[3] numbers[4] numbers[5]
©20167-8
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Inputting and Outputting
Array Elements
• Array elements can be treated as any other
variable.
• They are simply accessed by the same name and
a subscript.
• See example: ArrayDemo1.java
• Array subscripts can be accessed using variables
(such as for loop counters).
• See example: ArrayDemo2.java
©20167-9
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
©2016 Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Bounds Checking
©20167-11
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
©2016 Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Off-by-One Errors
• It is very easy to be off-by-one when accessing arrays.
©20167-13
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Array Initialization
int[]days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int numbers[];
• These are equivalent but the first style is typical.
©20167-17
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Processing Array Contents
• Array elements can be used in relational operations:
if(cost[20] < cost[0])
{
//statements
}
• They can be used as loop conditions:
while(value[count] != 0)
{
//statements
}
©20167-18
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Array Length
• Arrays are objects and provide a public field named length
that is a constant that can be tested.
double[] temperatures = new double[25];
©20167-19
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
The Enhanced for Loop
• General format:
©20167-20
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
The Enhanced for Loop
Example:
int[] numbers = {3, 6, 9};
For(int val : numbers)
{
System.out.println("The next value is "
+ val);
}
©20167-21
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Array Size
©20167-22
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Array Size
int numTests;
int[] tests;
Scanner keyboard = new Scanner(System.in);
System.out.print("How many tests do you have? ");
numTests = keyboard.nextInt();
tests = new int[numTests];
©20167-23
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Reassigning Array References
• An array reference can be assigned to another array
of the same type.
// Create an array referenced by the
numbers variable.
int[] numbers = new int[10];
// Reassign numbers to a new array.
©20167-25
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Reassigning Array References
©20167-26
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Copying Arrays
2 4 6 8 10
array1 holds an
Address
address to the array
Example:
array2 holds an
SameArray.java
Address
address to the array
©20167-27
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Copying Arrays
• You cannot copy an array by merely assigning one reference
variable to another.
• You need to copy the individual elements of one array to
another.
©20167-28
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Passing Array Elements to a Method
©20167-29
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
©2016 Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Passing Arrays as Arguments
©20167-32
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Comparing Arrays: Example
int[] firstArray = { 2, 4, 6, 8, 10 };
int[] secondArray = { 2, 4, 6, 8, 10 };
boolean arraysEqual = true;
int i = 0;
if (arraysEqual)
System.out.println("The arrays are equal.");
else
System.out.println("The arrays are not equal.");
©20167-33
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Useful Array Operations
• Finding the Highest Value
int [] numbers = new int[50];
int highest = numbers[0];
for (int i = 1; i < numbers.length; i++)
{
if (numbers[i] > highest)
highest = numbers[i];
}
• Finding the Lowest Value
int lowest = numbers[0];
for (int i = 1; i < numbers.length; i++)
{
if (numbers[i] < lowest)
lowest = numbers[i];
}
©20167-34
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Useful Array Operations
©20167-35
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Partially Filled Arrays
• Typically, if the amount of data that an array must hold is unknown:
• size the array to the largest expected number of elements.
• use a counting variable to keep track of how much valid data is in the
array.
…
int[] array = new int[100];
int count = 0;
…
System.out.print("Enter a number or -1 to quit: ");
number = keyboard.nextInt();
while (number != -1 && count <= 99)
{
array[count] = number;
count++;
System.out.print("Enter a number or -1 to quit: ");
number = keyboard.nextInt();
} input, number and keyboard were
… previously declared and keyboard
references a Scanner object
©20167-36
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Arrays and Files
©20167-37
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Arrays and Files
• Reading the contents of a file into an array:
final int SIZE = 5; // Assuming we know the size.
int[] numbers = new int[SIZE];
int i = 0;
File file = new File ("Values.txt");
Scanner inputFile = new Scanner(file);
while (inputFile.hasNext() && i < numbers.length)
{
numbers[i] = inputFile.nextInt();
i++;
}
inputFile.close();
©20167-38
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Returning an Array Reference
• A method can return a reference to an array.
• The return type of the method must be declared as an array of
the right type.
public static double[] getArray()
{
double[] array = { 1.2, 2.3, 4.5, 6.7, 8.9 };
return array;
}
©20167-39
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
String Arrays
©20167-40
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
String Arrays
Address
names[0] null
names[1] null
names[2] null
names[3] null
©20167-41
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
String Arrays
Address
©20167-42
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Calling String Methods On Array
Elements
• String objects have several methods, including:
• toUpperCase
• compareTo
• equals
• charAt
• Each element of a String array is a String object.
• Methods can be used by using the array name and
index as before.
System.out.println(names[0].toUpperCase());
char letter = names[3].charAt(0);
©20167-43
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
The length Field & The length Method
©20167-44
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Arrays of Objects
accounts[1] Address
balance: 0.0
accounts[2] Address
accounts[3] Address balance: 0.0
accounts[4] Address
©20167-46
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
The Sequential Search Algorithm
©20167-47
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Two-Dimensional Arrays
row 1
row 2
row 3
©20167-48
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Two-Dimensional Arrays
• Declaring a two-dimensional array requires two sets of
brackets and two size declarators
• The first one is for the number of rows
• The second one is for the number of columns.
• The two sets of brackets in the data type indicate that the
scores variable will reference a two-dimensional array.
• Notice that each size declarator is enclosed in its own set of
brackets.
©20167-49
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Accessing Two-Dimensional Array
Elements
• When processing the data in a two-dimensional
array, each element has two subscripts:
• one for its row and
• another for its column.
©20167-50
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Accessing Two-Dimensional Array
Elements
©20167-51
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Accessing Two-Dimensional Array
Elements
©20167-52
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Accessing Two-Dimensional Array
Elements
• Programs that process two-dimensional arrays can do so with
nested loops.
• To fill the scores array: Number of rows, not the
largest subscript
for (int row = 0; row < 3; row++)
{ Number of
for (int col = 0; col < 4; col++) columns, not the
{
largest subscript
System.out.print("Enter a score: ");
scores[row][col] = keyboard.nextDouble();
}
}
keyboard references a
Scanner object
©20167-53
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Accessing Two-Dimensional Array
Elements
• To print out the scores array:
©20167-54
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Initializing a Two-Dimensional Array
• Java automatically creates the array and fills its elements with the
initialization values.
• row 0 {1, 2, 3}
• row 1 {4, 5, 6}
• row 2 {7, 8, 9}
©20167-55
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Initializing a Two-Dimensional Array
©20167-56
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
The length Field
©20167-57
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
The length Field
©20167-58
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Summing The Elements of a Two-
Dimensional Array
int[][] numbers = { { 1, 2, 3, 4 },
{5, 6, 7, 8},
{9, 10, 11, 12} };
int total;
total = 0;
for (int row = 0; row < numbers.length; row++)
{
for (int col = 0; col < numbers[row].length; col++)
total += numbers[row][col];
}
©20167-59
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Summing The Rows of a Two-
Dimensional Array
©20167-60
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Summing The Columns of a Two-
Dimensional Array
int[][] numbers = {{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}};
int total;
©20167-61
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Passing and Returning Two-
Dimensional Array References
• There is no difference between passing a single or
two-dimensional array as an argument to a
method.
©20167-62
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Ragged Arrays
• When the rows of a two-dimensional array are of different
lengths, the array is known as a ragged array.
• You can create a ragged array by creating a two-dimensional
array with a specific number of rows, but no columns.
int [][] ragged = new int [4][];
©20167-63
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
More Than Two Dimensions
©20167-64
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Selection Sort
• In a selection sort:
• The smallest value in the array is located and moved to
element 0.
• Then the next smallest value is located and moved to
element 1.
• This process continues until all of the elements have been
placed in their proper order.
• See example: SelectionSortDemo.java
©20167-65
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Binary Search
• A binary search:
• requires an array sorted in ascending order.
• starts with the element in the middle of the array.
• If that element is the desired value, the search is over.
• Otherwise, the value in the middle element is either greater or less
than the desired value
• If it is greater than the desired value, search in the first half of the
array.
• Otherwise, search the last half of the array.
• Repeat as needed while adjusting start and end points of the search.
• See example: BinarySearchDemo.java
©20167-66
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Command-Line Arguments
©20167-67
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Command-Line Arguments
• Example: CommandLine.java
• It is not required that the name of main’s parameter array be
args.
©20167-68
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Variable-Length Argument Lists
©20167-69
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
The ArrayList Class
import java.util.ArrayList;
©20167-70
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Creating an ArrayList
©20167-71
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Using an ArrayList
©20167-72
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Using an ArrayList
• Example: ArrayListDemo1.java
©20167-73
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Using an ArrayList
©20167-74
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Using an ArrayList
• The ArrayList class's add method with one argument
adds new items to the end of the ArrayList
• To insert items at a location of choice, use the add method
with two arguments:
nameList.add(1, "Mary");
This statement inserts the String "Mary" at index 1
©20167-75
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Using an ArrayList
©20167-76
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Using an ArrayList
ArrayList<BankAccount> accountList =
new ArrayList<BankAccount>();
©20167-77
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Using an ArrayList
See: ArrayListDemo6.java
©20167-78
Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved.
Using an ArrayList