7.1 Introduction • Arrays – Data structures which reference one or more value – All items must have same data type – Remain same size.

Download Report

Transcript 7.1 Introduction • Arrays – Data structures which reference one or more value – All items must have same data type – Remain same size.

7.1
Introduction
• Arrays
– Data structures which reference one or more value
– All items must have same data type
– Remain same size once created
• Fixed-length entries
 2003 Prentice Hall, Inc. All rights reserved.
7.2
• Array
– Group of variables
• Have same type
– Reference type
 2003 Prentice Hall, Inc. All rights reserved.
Arrays
Name of array
(note that all
elements of this
array have the
same name, c)
Index (or subscript) of
the element in array c
Fig. 7.1
 2003 Prentice Hall, Inc. All rights reserved.
c[ 0 ]
-45
c[ 1 ]
6
c[ 2 ]
0
c[ 3 ]
72
c[ 4 ]
1543
c[ 5 ]
-89
c[ 6 ]
0
c[ 7 ]
62
c[ 8 ]
-3
c[ 9 ]
1
c[ 10 ]
6453
c[ 11 ]
78
A 12-element array.
Array vs. variable
• Variable hold one data type.
– Num = 70;
• Array references multiple elements of the same
data type.
– Num[0]= 70;
– Num[1]=20;
– Now, it is easy to compare, search or sort all elements of the
array since we have access to all of the them at the same
time.
 2003 Prentice Hall, Inc. All rights reserved.
7.2
Arrays (cont.)
• Index
– Also called subscript
– Position number in square brackets
– Must be positive integer or integer expression
–
Assign a value to array element 1
• c[ 0 ] = 2;
Index = 0
Reference first
element of the
array
• Adds 2 to six element: c[ 5 ]
C[5] +=2;
Index= 5 reference array element 6
 2003 Prentice Hall, Inc. All rights reserved.
7.2
Arrays (cont.)
• Examine array c
– c is the array name
– c.length accesses array c’s length
– c has 12 elements ( c[0], c[1], … c[11] )
 2003 Prentice Hall, Inc. All rights reserved.
7.3
Declaring and Creating Arrays
• Declaring and Creating arrays
– Arrays are objects that occupy memory
– Created dynamically with keyword new
– Or declare and create in two line:
int c[]; // declare array
c = new int[ 12 ]; // create array
– Creating an array and declaring it in
one line
int c[] = new int[ 12 ];
• We can create arrays of objects with String data type
String b[] = new String[ 100 ];
 2003 Prentice Hall, Inc. All rights reserved.
7.4
•
•
•
•
Examples Using Arrays
Declaring arrays
Creating arrays
Initializing arrays
Manipulating array elements
 2003 Prentice Hall, Inc. All rights reserved.
7.4
Examples Using Arrays (Cont.)
• Creating and initializing an array
– Declare array
– Create array
– Initialize array elements
 2003 Prentice Hall, Inc. All rights reserved.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
29
30
// Fig. 7.2: InitArray.java
// Creating an array.
import javax.swing.*;
Outline
Declare array as an array of
ints
public class InitArray {
InitArray.java
Create 10 ints for array; each int
Line 9
public static void main( String args[] )
is initialized to 0 by default
Declare array as an
{
int array[];
// declare reference to an array
array of ints
array.length returns
array = new int[ 10 ]; // create array
length of array
Line 11
Create 10 ints for
String output = "Index\tValue\n";
array; each int is
// append each array element's value to String output
initialized to 0 by
for ( int counter = 0; counter < array.length; counter++ )
default
output += counter + "\t" + array[ counter ] + "\n";
JOptionPane.showMessageDialog( null, output,
"Initializing an Array of int Values",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
} // end class InitArray
Line 16
array.length
returns length of
array
array[counter] returns int
Line 17
associated with index in array
array[counter]
returns int associated
with index in array
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
InitArray.java
Each int is initialized Each int is
to 0 by default
initialized to 0 by
default
 2003 Prentice Hall, Inc.
All rights reserved.
7.4
Examples Using Arrays (Cont.)
• Using an array initializer
– Use initializer list
• Items enclosed in braces ({})
• Items in list separated by commas
int n[] = { 10, 20, 30, 40, 50 };
– Creates a five-element array
– Index values of 0, 1, 2, 3, 4
– Do not need keyword new
 2003 Prentice Hall, Inc. All rights reserved.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
22
23
24
25
26
27
28
29
30
// Fig. 7.3: InitArray.java
// Initializing an array with a declaration.
import javax.swing.*;
Outline
Declare array as an
array of ints
public class InitArray {
InitArray.java
Line 11
public static void main( String args[] )
Compiler uses initializerDeclare
list
{
// array initializer specifies number of elements and to allocate array array of
// value for each element
int array[] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 };
String output = "Index\tValue\n";
// append each array element's value to String output
for ( int counter = 0; counter < array.length; counter++ )
output += counter + "\t" + array[ counter ] + "\n";
array as an
ints
Line 11
Compiler uses
initializer list to
allocate array
JOptionPane.showMessageDialog( null, output,
"Initializing an Array with a Declaration",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
} // end class InitArray
 2003 Prentice Hall, Inc.
All rights reserved.
Outline
InitArray.java
Each array element
corresponds to element
in initializer list
Each array element
corresponds to
element in initializer
list
 2003 Prentice Hall, Inc.
All rights reserved.
7.4
Examples Using Arrays (Cont.)
• Calculating the value to store in each array
element
– Initialize elements of 10-element array to even integers
 2003 Prentice Hall, Inc. All rights reserved.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
25
// Fig. 7.4: InitArray.java
// Initialize array with the even integers from 2 to 20.
Declare array
import javax.swing.*;
as an
array of ints
Outline
InitArray.java
public class InitArray {
Line 10
Create 10 ints for array
Declare array as an
array of ints
public static void main( String args[] )
{
final int ARRAY_LENGTH = 10;
// constant
int array[];
// reference to int array
array = new int[ ARRAY_LENGTH ];
// create array
// calculate value for each array element
for ( int counter = 0; counter < array.length; counter++ )
array[ counter ] = 2 + 2 * counter;
String output = "Index\tValue\n";
Line 12
Create 10 ints for
array
Line 16
Use array index to
assign array value
for ( int counter = 0; counter < array.length; counter++ )
output += counter + "\t" + array[ counter ] + "\n";
System.out.print( output );
Use array index to
assign array value
 2003 Prentice Hall, Inc.
All rights reserved.
30
31
32
33
34
System.exit( 0 );
Outline
} // end main
InitArray.java
} // end class InitArray
 2003 Prentice Hall, Inc.
All rights reserved.
7.4
Examples Using Arrays (Cont.)
• Summing the elements of an array
– Array elements can represent a series of values
• We can sum these values
 2003 Prentice Hall, Inc. All rights reserved.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Outline
// Fig. 7.5: SumArray.java
// Total the values of the elements of an array.
import javax.swing.*;
Declare
public class SumArray {
array with
initializer list
public static void main( String args[] )
{
int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int total = 0;
// add each element's value to total
for ( int counter = 0; counter < array.length; counter++ )
total += array[ counter ];
SumArray.java
Line 9
Declare array with
initializer list
Lines 13-14
Sum all array values
Sum all array values
JOptionPane.showMessageDialog( null,
"Total of array elements: " + total,
"Sum the Elements of an Array",
JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
} // end class SumArray
 2003 Prentice Hall, Inc.
All rights reserved.
7.4
Examples Using Arrays (Cont.)
• Using histograms do display array data graphically
– Histogram
• Plot each numeric value as bar of asterisks (*)
 2003 Prentice Hall, Inc. All rights reserved.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
25
// Fig. 7.6: Histogram.java
// Histogram printing program.
import javax.swing.*;
Outline
Declare array with
initializer list
public class Histogram {
public static void main( String args[] )
{
int array[] = { 19, 3, 15, 7, 11, 9, 13, 5, 17, 1 };
String output = "Element\tValue\tHistogram";
// for each array element, output a bar in histogram
for ( int counter = 0; counter < array.length; counter++ ) {
output += "\n" + counter + "\t" + array[ counter ] + "\t";
// print bar of asterisks
for ( int stars = 0; stars < array[ counter ]; stars++ )
output += "*";
} // end outer for
Histogram.java
Line 9
Declare array with
initializer list
Line 19
For each array
element, print
associated number of
asterisks
For each array element, print
associated number of asterisks
 2003 Prentice Hall, Inc.
All rights reserved.
26
27
28
29
30
31
32
33
JOptionPane.showMessageDialog( null, output,
"Histogram Printing Program", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
Outline
Histogram.java
} // end main
} // end class Histogram
 2003 Prentice Hall, Inc.
All rights reserved.
7.4
Examples Using Arrays (Cont.)
• Using the elements of an array as counters
– Use a series of counter variables to summarize data
 2003 Prentice Hall, Inc. All rights reserved.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
25
26
27
28
29
30
31
Outline
// Fig. 7.7: RollDie.java
// Roll a six-sided die 6000 times.
import javax.swing.*;
public class RollDie {
public static void main( String args[] )
{
int frequency[] = new int[ 7 ];
RollDie.java
Declare frequency
as
array of 7 ints
Line 9
Generate 6000 random
Declare frequency
integers in range 1-6
as array of 7 ints
// roll die 6000 times; use die value as frequency index
for ( int roll = 1; roll <= 6000; roll++ )
++frequency[ 1 + ( int ) ( Math.random() * 6 ) ];
String output = "Face\tFrequency";
Increment
frequency values at
index associated with random number
String output
// append frequencies to
for ( int face = 1; face < frequency.length; face++ )
output += "\n" + face + "\t" + frequency[ face ];
JOptionPane.showMessageDialog( null, output,
"Rolling a Die 6000 Times", JOptionPane.INFORMATION_MESSAGE );
Lines 12-13
Generate 6000
random integers in
range 1-6
Line 13
Increment
frequency values at
index associated with
random number
System.exit( 0 );
} // end main
} // end class RollDie
 2003 Prentice Hall, Inc.
All rights reserved.
Array review
Figuring out the array positions
• In Java, an arrays’ elements start out at index 0
and go up to (the number of elements – 1)
• For example, our array of 10 student grades filled
in with grades might look like:
Index 0
1
2
3
4
5
6
7
8
9
Value 85 76 99 38 78 98 89 90 82 88
 2003 Prentice Hall, Inc. All rights reserved.
•
•
•
•
•
Keyword new
array - review
The keyword new is used in Java when you wish
to create a new object.
In Java, arrays are objects.
We will not speak about the details of an object.
All you need to know is in the case of arrays, new
is used to create the new array.
All positions of the new array will automatically
be initialized to the default value for the array’s
type.
 2003 Prentice Hall, Inc. All rights reserved.
Some powerful features of arrays
• Can use expressions as the subscript
– E.g. if variables a = 1 and b = 2
• studentGrades[ a + b ] would be the same as writing
•
studentGrades[ 3 ]
• Can use array elements in expressions
++ studentGrades[1]; increment value of array element
#2 by one
Same as
studentGrades[1] = studentGrades[1] + 1;
 2003 Prentice Hall, Inc. All rights reserved.
7.4
Examples Using Arrays (Cont.)
• Using arrays to analyze survey results
– 40 students rate the quality of food
• 1-10 Rating scale: 1 mean awful, 10 means excellent
– Place 40 responses in array of integers
– Summarize results
 2003 Prentice Hall, Inc. All rights reserved.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Fig. 7.8: StudentPoll.java
// Student poll program.
import javax.swing.*;
public class StudentPoll {
Outline
Declare responses as
Declare
frequency as array of 11
array to store
40 responses
StudentPoll.jav
int and ignore the first
element
a
public static void main( String args[] )
{
int responses[] = { 1, 2, 6, 4, 8, 5, 9, 7, 8, 10, 1, 6, 3, 8, 6,
10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6, 5, 6, 7, 5, 6,
4, 8, 6, 8, 10 };
int frequency[] = new int[ 11 ];
Lines 9-11
Declare responses
as array to store 40
responses
Line 12
Declare frequency
as array of 11 int
For each response, increment
and ignore the first
frequency values at index
element
String output = "Rating\tFrequency\n";
associated with that response
// append frequencies to String output
Lines 16-17
for ( int rating = 1; rating < frequency.length; rating++ )
For each response,
output += rating + "\t" + frequency[ rating ] + "\n";
increment
frequency values at
index associated with
that response
// for each answer, select responses element and use that value
// as frequency index to determine element to increment
for ( int answer = 0; answer < responses.length; answer++ )
++frequency[ responses[ answer ] ];
 2003 Prentice Hall, Inc.
All rights reserved.
28
29
30
31
32
33
34
35
JOptionPane.showMessageDialog( null, output,
"Student Poll Program", JOptionPane.INFORMATION_MESSAGE );
System.exit( 0 );
} // end main
Outline
StudentPoll.jav
a
} // end class StudentPoll
 2003 Prentice Hall, Inc.
All rights reserved.
7.4
Examples Using Arrays (Cont.)
• Some additional points
– When looping through an array
• Index should never go below 0
• Index should be less than total number of array elements
– When invalid array reference occurs
• Java generates ArrayIndexOutOfBoundsException
– Chapter 15 discusses exception handling
 2003 Prentice Hall, Inc. All rights reserved.
7.5
References and Reference Parameters
• Two ways to pass arguments to methods
– Pass-by-value
• Copy of argument’s value is passed to called method
• In Java, every primitive is pass-by-value
– Pass-by-reference
•
•
•
•
Caller gives called method direct access to caller’s data
Called method can manipulate this data
Improved performance over pass-by-value
In Java, every object is pass-by-reference
– In Java, arrays are objects
• Therefore, arrays are passed to methods by reference
 2003 Prentice Hall, Inc. All rights reserved.
7.6
Passing Arrays to Methods
• To pass array argument to a method
– Specify array name without brackets
• Array hourlyTemperatures is declared as
int hourlyTemperatures = new int[ 24 ];
• The method call
modifyArray( hourlyTemperatures );
• Passes array hourlyTemperatures to method
modifyArray
 2003 Prentice Hall, Inc. All rights reserved.
Passing arrays to methods (cont)
In the method header, use similar syntax as that for
array declaration:
public static void passArray(int array [] )
or
public static void passArray(int [] array )
 2003 Prentice Hall, Inc. All rights reserved.