Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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