Download Chapter 6 Arrays - Career Account Web Pages

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Arrays
Chapter 6
Chapter 6
1
Announcements
• Project 3 is done!
• Project 4 is out! (Due in one week)
• We have reached the point where you
must start on time to finish projects
• Cancelled labs will be made available
– Grades will be prorated
– Should do them on your own
Chapter 6
2
Exam: Programming Q. 1
public int dayOfYear() {
int count = 0;
for( int i = 1; i <= month - 1; i++ ) {
count += numDays( i );
}
count += day;
return count;
}
public int compareTo( Date other ) {
if( month == other.getMonth() ) {
return day - other.getDay();
} else {
return month - other.getMonth();
}
}
Chapter 6
3
Exam: Programming Q. 2
import java.util.Scanner;
public class Padovan
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
System.out.print("k: ");
int k = s.nextInt();
int p0 = 1, p1 = 1, p2 = 2;
if (k < 1) return;
System.out.print(p0 + " " + p1 + " " + p2);
int pnew = p0 + p1;
while (pnew <= k)
{
System.out.print(" " + pnew);
p0 = p1;
p1 = p2;
p2 = pnew;
pnew = p0 + p1;
}
}
}
Chapter 6
4
Exam: Programming Q. 3
public class Tokenizer{
public static final char DELIMITER = ',';
public static void main(String args[]){
Tokenizer t = new Tokenizer();
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter a string:");
String input = keyboard.nextLine();
t.tokenize(input);
}
public void tokenize(String input){
System.out.println("Tokens:");
for(int i = 0; i < input.length(); i++){
if(input.charAt(i) == DELIMITER){
System.out.println();
}
else{
System.out.print(input.charAt(i));
}
}
}
}
Chapter 6
5
Creating and Accessing
Arrays
• example
double[] temperature = new double[7];
is like declaring seven variables of type
double, named
temperature[0], temperature[1],
temperature[2], temperature[3],
temperature[4], temperature[5], temperature[6].
Chapter 6
6
Creating and Accessing
Arrays, cont.
• These variables can be used just like any
other variables of type double.
• examples
temperature[3] = 32.0;
temperature[6] = temperature[3] + 5;
System.out.println(temperature[6]);
temperature[index] = 66.5;
• These variables are called indexed variables,
elements, or subscripted variables.
Chapter 6
7
The length Instance Variable
• An array has only one public instance
variable, length.
• The length variable stores the number of
elements the array can hold.
• Using Array_Name.length typically produces
clearer code than using an integer literal.
Chapter 6
8
The length Instance
Variable, cont
• class ArrayOfTemperatures2
Chapter 6
9
Indices and length
• The indices of an array start with 0 and end
with Array_Name.length-1.
• When a for loop is used to step through an
array, the loop control variable should start at
0 and end at length-1.
• example
for (lcv = 0; lcv < temperature.length;
lcv++)
Chapter 6
10
Initializing Arrays
• An array can be initialized at the time it is
declared.
• example
double[] reading = {3, 3, 15.8, 9.7};
– The size of the array is determined by the
number of values in the initializer list.
Chapter 6
11
Initializing Arrays, cont.
• Uninitialized array elements are set to the
default value of the base type.
• However, it’s better to use either an initializer
list or a for loop.
int[] count = new int[100];
for (int i = 0, i < count.length, i++)
{
count[i] = 0;
}
Chapter 6
12
Case Study: Using an Array
as an Instance Variable, cont.
• class SalesReporter
Chapter 6
13
Indexed Variables as Method
Arguments
• An indexed variable can be used anywhere
that any other variable of the base type of the
array can be used.
• Hence, an indexed variable can be an
argument to a method.
Chapter 6
14
Indexed Variables as Method
Arguments, cont.
• class ArgumentDemo
Chapter 6
15
Entire Arrays as Method
Arguments
• An entire array can be used as a single
argument passed to a method.
• example
double[] a = new double[10];
SampleClass.change(a);
...
public static void change(double[] d)
– No brackets accompany the argument.
– Method change accepts an array of any size.
Chapter 6
16
Arguments for the Method
main
• Recall the heading for method main:
public static void main(String[] args)
• Method main takes an array of String values
as its argument.
Chapter 6
17
Arguments for the Method
main, cont.
• An array of String values can be provided in
the command line.
• example
java TestProgram Mary Lou
–
args[0]
is set to
is set to
“Mary”
– args[1]
“Lou”
System.out.println(“Hello “ + args[0] +
“ “ + args[1]);
prints
Hello Mary Lou.
Chapter 6
18
Use of = and == with Arrays
• The assignment operator = and the equality
operator ==, when used with arrays, behave
the same as when used with other objects.
– The assignment operator creates an alias,
not a copy of the array.
– The equality operator determines if two
references contain the same memory
address, not if two arrays contain the same
values.
Chapter 6
19
Making a Copy of an Array
• example
int[] a = new int[50];
int[] b = new int[50];
...
for (int j = 0; j < a.length; j++)
b[j] = a[j];
Chapter 6
20
Determining the “Equality” of
Two Arrays
• To determine if two arrays at different memory
locations contain the same elements in the
same order, define an equals method which
determines if
– both arrays have the same number of
elements
– each element in the first array is the same
as the corresponding element in the
second array.
Chapter 6
21
Determining the “Equality” of
Two Arrays, cont.
• A while loop can be used.
– A boolean variable match is set to true.
– Each element in the first array is compared
to the corresponding element in the second
array.
– If two elements are different, match is set to
false and the while loop is exited.
– Otherwise, the loop terminates with match
still set to true.
Chapter 6
22
Determining the “Equality” of
Two Arrays, cont.
• class TestEquals
Chapter 6
23
Determining the “Equality” of
Two Arrays, cont.
• Common functionality is built in:
– java.util.Arrays.equals( [], [] )
Chapter 6
24
Methods that Return Arrays
• A method can return an array.
• The mechanism is basically the same as for
any other returned type.
• example
public static Base_Type[] Method_Name
(Parameter_List)
Base_Type Array_Name;
…
return Array_Name;
• The method need not be
Chapter 6
public
or
static.
25
Methods that Return Arrays,
cont.
• class ReturnArrayDemo
Chapter 6
26
Partially Filled Arrays
• Sometimes you need some, but not all of the
indexed variables in an array.
• In such situations, it is important to keep track
of how much of the array has been used
and/or the index of the last entry so that only
meaningful values are accessed.
Chapter 6
27
Partially Filled Arrays, cont.
Chapter 6
28
Sorting Arrays
• Sometime we want numbers in an array
sorted from smallest to largest, or from
largest to smallest.
• Sometimes we want the strings referenced by
an array to be in alphabetical order.
• Sorting techniques typically are easy to adapt
to sort any type that can be ordered.
Chapter 6
29
Selection Sort
• The selection sort arranges the values in an
an array so that
a[0] <= a[1] <= a[2] … <= a[a.length-1]
• The selection sort places the smallest item in
a[0], the next smallest item in a[1], and so on
for all but the last item.
for(i = 0; i <a.length-1; i++)
place the ith smallest item in a[i]
Chapter 6
30
Selection Sort, cont.
• Selection sort begins by finding the smallest
item in the array and swapping it with the item
in a[0].
• Selection sort continues by finding the
smallest item in the remainder of the array
and swapping it with the next item in array a.
• Selection sort terminates when only one item
remains.
Chapter 6
31
Selection Sort, cont.
Chapter 6
32
Selection Sort, cont.
• class SelectionSort
Chapter 6
33
Swapping Elements
• To swap two elements a[i] and a[j], one of
them must be saved temporarily.
Chapter 6
34
Swapping Elements, cont.
• class interchange
Chapter 6
35
Introduction to
Multidimensional Arrays
• An array with more than one index sometimes
is useful.
• example: savings account balances at
various interest rates for various numbers of
years
– columns for interest rates
– rows for years
• This two-dimensional table calls for a twodimensional array.
Chapter 6
36
Introduction to
Multidimensional Arrays, cont.
Chapter 6
37
Introduction to
Multidimensional Arrays, cont.
Chapter 6
38
Introduction to
Multidimensional Arrays, cont.
• An array with n indices is called an ndimensional array.
• The arrays we considered previously, which
had one index, were one-dimensional arrays.
Chapter 6
39
Multidimensional-Array Basics
• example declaration
int[][] table = new int [10][6];
or
int[][] table;
table = new int[10][6];
• The number of bracket pairs in the
declaration is the same as the number of
indices.
Chapter 6
40
Multidimensional-Array
Basics, cont.
• syntax
Base_Type[]…[] Array_Name =
new Base_Type[Length_1]…[Length_n];
• examples
char[][] page = new char [100][80];
double[][][] threeDPicture =
new double[10][20][30];
SomeClass[][] entry =
new SomeClass[100][80];
Chapter 6
41
Multidimensional-Array
Basics, cont.
• Nested for loops can be used to change the
values of the elements of the array and to
display the values of the elements of the
array.
Chapter 6
42
Multidimensional-Array
Basics, cont.
• class InterestTable
Chapter 6
43
Multidimensional-Array
Parameters
• Methods may have multidimensional-array
parameters.
Chapter 6
44
Multidimensional-Array
Parameters, cont.
• class InterestTable2
Chapter 6
45
Multidimensional-Array
Returned Values
• A method may return a multidimensional
array.
• example
public static double[][] corner(double[][]
sArray, int i)
{
double[][] temp = new double[i][i];
…
return temp;
}
Chapter 6
46
Implementation of
Multidimensional Arrays
• Multidimensional arrays are implemented in
Java using one-dimensional arrays.
• Consider
int[][] table = new int[10][6];
– The array table is a one-dimensional array
of length 10.
– Its base type is int[].
– Therefore, it is an array of arrays.
Chapter 6
47
Implementation of
Multidimensional Arrays, cont.
• This permits us to use the length instance
variable, instead of an integer literal, to
control a for loop used to initialize or print the
values of the elements of an array.
• example
for (r = 0; r < table.length; r++)
for (c = 0; c < table[r].length; c++)
Chapter 6
48
Implementation of
Multidimensional Arrays, cont.
• redefined method showTable
Chapter 6
49
Ragged Arrays
• Since a two-dimensional array in Java is an
array of arrays, each row can have a different
number of elements (columns).
• Arrays in which rows have different numbers
of elements are called ragged arrays.
Chapter 6
50
Ragged Arrays, cont.
• Example
int[][] b = new int[3][];
b[0] = new int[5];
b[1] = new int[7];
b[2] = new int[4];
Chapter 6
51