540 likes | 747 Views
Arrays. Chapter 6. Reminders. Project 4 released: due Oct 6 @ 10:30 pm Project 1 regrades due by midnight tonight Project 2 grades posted on WebCT – regrade requests due by Friday Oct 7 midnight (send to rnehme@cs.purdue.edu). Exam 1 Info. Exam will be returned in recitation today
E N D
Arrays Chapter 6 Chapter 6
Reminders • Project 4 released: due Oct 6 @ 10:30 pm • Project 1 regrades due by midnight tonight • Project 2 grades posted on WebCT – regrade requests due by Friday Oct 7 midnight (send to rnehme@cs.purdue.edu) Chapter 6
Exam 1 Info • Exam will be returned in recitation today • Solution available on the website • Scores are available on WebCT • Problems/scoring errors: talk to your GTA • Exam 1 Stats: • Mean: 73.2 • Median: 77 • High: 98 Chapter 6
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]. • Similar to: Automobile myCar = new Automobile(“Toyota”); Chapter 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
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. • length is an instance variable, not a method Array_Name.length()wont work Chapter 6
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
Array Index Out of Bounds • Every index must evaluate to an integer which is not less than 0 and not greater than Array_Name.length-1. • Otherwise, the index is said to be out of bounds or invalid. • An out-of-bounds index will produce a run-time error. Chapter 6
Arrays of Objects Chapter 6
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
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 public or static. Chapter 6
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
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
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
Selection Sort, cont. Chapter 6
Swapping Elements • To swap two elements a[i] and a[j], one of them must be saved temporarily. Chapter 6
Swapping Elements, cont. • class interchange Chapter 6
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 two-dimensional array. Chapter 6
Introduction to Multidimensional Arrays, cont. • An array with n indices is called an n-dimensional array. • The arrays we considered previously, which had one index, were one-dimensional arrays. Chapter 6
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
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
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
Multidimensional-Array Parameters • Methods may have multidimensional-array parameters. Chapter 6
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
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
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
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
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
(optional) Graphics Supplement: Outline • Part 1: Text Areas and Text Fields • Part 2: Drawing Polygons and Polylines Chapter 6
Text Areas and Text Fields • A text area is a window that can be used for text input and text output. • any number of lines • any number of characters per line • A text field allows only one line of characters. • Text area and text fields provide areas for changeable text in a GUI. Chapter 6
Programming Example: A Question and Answer Applet • The applet accepts a question, requests some advice, and provides an answer. • The applet contains some advice for the first user, but then takes the advice provided by one user, and uses it to answer the next user. Chapter 6
Programming Example:, cont. Chapter 6
JTextArea Objects • A text area is an object of the class JTextArea. • A JTextArea can be created with private JTextArea theText; … theText = new JTextArea(LINES, CHAR_PER_LINE); • Typically, this occurs inside the init method. Chapter 6
JTextArea Objects, cont. • The text in the text area can be read using String question = theText.getText(); • The text in the text area can be set using theText.setText(“That’s difficult.\n” + “I need some advice.\n” + “Give me some advice and click.”); • Text can be entered in excess of the specified size, but may not be entirely visible. Chapter 6
JTextField Objects • A text field is an object of the class JTextField. • A JTextField can be created with private JTextField theText; … theText = new JTextField(NUMBER_OF_CHARS); • Typically, this occurs inside the init method. Chapter 6
JTextField Objects, cont. • The text in the text field can be read using String question = theText.getText(); • The text in the text area can be set using theText.setText(“That’s all, folks.”); • Text can be entered in excess of the specified size, but may not be entirely visible. Chapter 6
Drawing Polygons and Polylines • The methods drawPolygon and fillPolygon allow you to draw polygons which are closed figures made of of line segments that meet at vertices but do not cross. • A polyline is similar to a polygon, but uses the method drawPolyline and need not be closed. Chapter 6
Drawing Polygons and Polylines, cont. Chapter 6
Drawing Polygons and Polylines, cont. • class House Chapter 6
Drawing Polygons and Polylines, cont. Chapter 6
Method drawPolygon • “syntax” canvas.drawPolygon(Array_of_xs, Array_of_ys, Number_of_Points); • example private int[] xCoord = {150, 150, 200, 250, 250}; private int[] yCoord = {100, 40, 20, 40, 100}; … canvas.drawPolygon(xCoord, yCoord, xCoord.length); Chapter 6
Method fillPolygon • “syntax” canvas.fillPolygon(Array_of_xs, Array_of_ys, Number_of_Points); • example private int[] xCoord = {150, 150, 200, 250, 250}; private int[] yCoord = {100, 40, 20, 40, 100}; … canvas.fillPolygon(xCoord, yCoord, xCoord.length); Chapter 6