CSE1030 – Introduction to Computer Science II CSE1030 – Lecture

CSE1030 – Introduction to Computer Science II CSE1030 – Lecture

CSE1030 – Lecture #16 CSE1030 – Introduction to Computer Science II Review: Arrays Regular 2D Arrays Irregular 2D Arrays Lecture #16 We’re Done! Arrays II CSE1030 2 class example1 Review: An Array is… { public static void main(String[] args) A Name, and a Table of Arrows (Pointers), to Blocks of { Memory: Person[] p = { new Person("Sally", 26), Person[] p = new Person[] { new Person("Frank", 28), new Person("Sally", 26), new Person("Joe", 21), new Person("Frank", 28), }; new Person("Joe", 21), }; System.out.println("Here's #2:"); System.out.println( p[1] ); System.out.println("Here's All of Them:"); p [0] Person {“Sally”, 26} for(int i = 0; i < p.length; i++) System.out.println(" " + p[i]); [1] Person {“Frank”, 28} System.out.println("Cause an Error! #4:"); [2] Person {“Joe”, 21} System.out.println( p[3] ); } CSE1030 3 } CSE1030 4 Array Example Output CSE1030 – Lecture #16 >java example1 Review: Arrays Here's #2: Regular 2D Arrays Frank(28) Here's All of Them: Irregular 2D Arrays Sally(26) We’re Done! Frank(28) Joe(21) Cause an Error! #4: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 at example1.main(example1.java:20) CSE1030 5 CSE1030 6 The Big Idea so far… New Idea… What about Tables? When data "looks like" this: What do we do when the data "looks like" this? (and you can't use, or don't need the complexity of, a Collection) Use an array: Use a 2-Dimensional array: Object[] array = new Object[5]; Object[3][4] array = new Object[3][4]; array = array[0] array[1] array = array[0][0] array[0][1] array[0][2] array[0][3] array[2] array[1][0] array[1][1] array[1][2] array[1][3] array[3] array[2][0] array[2][1] array[2][2] array[2][3] array[4] CSE1030 7 CSE1030 8 2D Array Notation (1/4) 2D Array Notation (2/4) Declare Arrays: int[][] someNumbers; Initialising with int[][] someNumbers = { String[][] words; Hardcoded { 2, 3, 5, 7, 11, }, { 13, 17, 19, 23, 31, }, Values: }; Constructing someNumbers = new int[10][5]; Empty Arrays: String[] words = new String[3][2]; String[][] words = { { "Hello", "Good Bye" }, { "Bonjour", "Au revoir" } }; CSE1030 9 CSE1030 10 Array Notation (3/4) 2D Array Notation (4/4) Using Arrays: int n = someNumbers[i][j]; Accessing a int[][] someNumbers = { single Row: { 2, 3, 5, 7, 11, }, somenumbers[0][4] = 11; { 13, 17, 19, 23, 31, }, }; String greeting = words[1][0]; int[] oneRow = someNumbers[1]; for(int i = 0; i < oneRow.length; i++) Array Size System.out.print(" " + oneRow[i]); # rows: # columns: someNumbers.length someNumbers[0].length words.length words[0].length Output: 13 17 19 23 31 CSE1030 11 CSE1030 12 Example Program: ChessBoard.java ChessBoard.java Output: The game Chess is played on a board that is 8 +--------+--------+--------+--------+--------+--------+--------+--------+ squares x 8 squares | Rook | Knight | Bishop | Queen | King | Bishop | Knight | Rook | +--------+--------+--------+--------+--------+--------+--------+--------+ | Pawn | Pawn | Pawn | Pawn | Pawn | Pawn | Pawn | Pawn | +--------+--------+--------+--------+--------+--------+--------+--------+ | | | | | | | | | +--------+--------+--------+--------+--------+--------+--------+--------+ | | | | | | | | | +--------+--------+--------+--------+--------+--------+--------+--------+ | | | | | | | | | +--------+--------+--------+--------+--------+--------+--------+--------+ | | | | | | | | | +--------+--------+--------+--------+--------+--------+--------+--------+ | Pawn | Pawn | Pawn | Pawn | Pawn | Pawn | Pawn | Pawn | +--------+--------+--------+--------+--------+--------+--------+--------+ | Rook | Knight | Bishop | Queen | King | Bishop | Knight | Rook | +--------+--------+--------+--------+--------+--------+--------+--------+ So a 2D 8x8 array is an appropriate way to store the board information… CSE1030 13 CSE1030 14 CSE1030 – Lecture #16 Irregular 2D Arrays Review: Arrays Have a number of Rows Regular 2D Arrays Irregular 2D Arrays But the number of columns differ in some We’re Done! of the rows int[][] array = { array = 10 { 10, }, 20 21 22 { 20, 21, 22, }, { 30, 31, 32, 33, 34, }, 30 31 32 33 34 }; CSE1030 15 CSE1030 16 How are Irregular 2D Arrays Possible? example2.java A 2D Array is really an "Array of Arrays": class example2 { public static void main(String[] args) { 10 int[][] array = { int[][] array { 10, }, { 20, 21, 22, }, { 30, 31, 32, 33, 34, }, 20 }; 21 30 System.out.println("Rows:"); 22 System.out.println(" array.length = " + array.length); 31 32 33 34 CSE1030 17 CSE1030 18 System.out.println(); System.out.println("Columns:"); example2 Output for(int i = 0; i < array.length; i++) System.out.println( " Column " + i >java example2 + " has length: array[" + i + "].length = " + array[i].length); Rows: array.length = 3 System.out.println(); System.out.println("Entire array:"); Columns: for(int i = 0; i < array.length; i++) Column 0 has length: array[0].length = 1 { Column 1 has length: array[1].length = 3 for(int j = 0; j < array[i].length; j++) Column 2 has length: array[2].length = 5 System.out.print(" " + array[i][j]); System.out.println(); } Entire array: 10 System.out.println(); 20 21 22 System.out.println("Just the 2nd row array:"); 30 31 32 33 34 int[] secondRow = array[1]; for(int j = 0; j < secondRow.length; j++) Just the 2nd row array: System.out.print(" " + secondRow[j]); 20 21 22 System.out.println(); } } CSE1030 19 CSE1030 20 Example Problem Inefficient Array Implementation We want a database to allow us to We could build an array like this: catalogue the Moons of the planets in our String[][] = PlanetMoonDataBase = { { "Earth", "Moon" }, Solar System { "Mars", "Phobos" }, { "Mars", "Deimos" }, { "Jupiter", "Io" }, Earth - Moon Saturn - Titan Redundancy { "Jupiter", "Europa" }, - Rhea Wastes Space! { "Jupiter", "Ganymede" }, Mars - Phobos { "Jupiter", "Callisto" }, -etc. { "Jupiter", "Amalthea" }, -Deimos { "Jupiter", "Himalia" }, Uranus - Cordelia { "Jupiter", "Elara" }, Jupiter - Io { "Jupiter", "Pasiphae" }, - Ophelia { "Jupiter", "Sinope" }, -Europa -etc. - Ganymede etc. }; -etc. etc. CSE1030 21 CSE1030 22 A More Efficient Solution… Moons.java static String[][] Moons = { // Mercury = 0; {}, Example Program // Venus = 1; {}, // Earth = 2; {"Moon"}, // Mars = 3; {"Phobos", "Deimos",}, // Jupiter = 4; { "Io", "Europa", "Ganymede", "Callisto", "Amalthea", "Himalia", "Elara", "Pasiphae", "Sinope", "Lysithea", "Carme", "Ananke", "Leda", "Metis", "Adrastea", "Thebe", "Callirrhoe", "Themisto", "Kalyke", "Iocaste", etc... CSE1030 23 CSE1030 24 Advanced Usage of Arrays… CSE1030 – Lecture #16 You can have higher-dimensional arrays: Review: Arrays int[][][] array = { Regular 2D Arrays ... }; Irregular 2D Arrays We’re Done! You can have arrays of Objects: Object[] array = { new Moons(), new ChessBoard(), new Integer(10), new String[] { "Hi", "Bye" }, }; CSE1030 25 CSE1030 26 Next topic… Linked Lists CSE1030 27.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    7 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us