Java Bootcamp - Villanova University. CSC 2014 Java Bootcamp. Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University

Similar documents
Introduction to Arrays

Arrays - Review. Initializer Lists. The for-each Loop. Arrays, Part 2. Dr. Papalaskari 1. CSC 1051 Data Structures and Algorithms I

CSC 1051 Data Structures and Algorithms I. Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University

H212 Introduction to Software Systems Honors

Chapter 7. Arrays are objects that help us organize large amounts of information

Arrays, Part 3: Multidimensional arrays

COMP 202. Programming With Arrays

COMP 202. Programming With Arrays

CSC 1051 Data Structures and Algorithms I. Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University

Assignment 1 is due tonight at 11:59pm. Assignment 2 is due next Thursday at 11:59pm

Method OverLoading printf method Arrays Declaring and Using Arrays Arrays of Objects Array as Parameters

Arrays - Review. Two-Dimensional Arrays. Arrays, Part 2. Dr. Papalaskari 1. CSC 1051 Data Structures and Algorithms I

CSC 1051 Data Structures and Algorithms I. Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University

CSC 1051 Data Structures and Algorithms I. Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University

2/2/18. Assignment 2 is due Wednesday 14 February at 11:59pm. Reading for Monday s lecture is the remainder of Chapter 7 and all of Chapter 8

Arrays. Outline 1/7/2011. Arrays. Arrays are objects that help us organize large amounts of information. Chapter 7 focuses on:

Selection Statements and operators

Selection Statements and operators

CSC 1051 Data Structures and Algorithms I

ECE 122. Engineering Problem Solving with Java

ECE 122. Engineering Problem Solving with Java

CSC 1051 Villanova University. CSC 1051 Data Structures and Algorithms I. Course website:

Method OverLoading printf method Arrays Declaring and Using Arrays Arrays of Objects Array as Parameters

CSC 1051 Algorithms and Data Structures I. Final Examination May 2, Name:

Selection and Repetition Revisited

&KDSWHU$UUD\VDQG9HFWRUV

CSC 1051 Algorithms and Data Structures I. Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University

CSC 1051 Algorithms and Data Structures I. Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University

Arrays - Review. Arrays as Parameters. Arrays as Parameters. Arrays and File Input. Dr. Papalaskari 1. CSC 1051 Data Structures and Algorithms I

Selection and Repetition

Arrays and File Input

Arrays Chapter 7. Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013

CSC 1051 Data Structures and Algorithms I

Java I/O and Control Structures Algorithms in everyday life

Selection and Repetition Revisited

Chapter 6: Arrays. Presentation slides for. Java Software Solutions. for AP* Computer Science 3rd Edition

CSC 1051 Algorithms and Data Structures I. Final Examination May 2, Name: Question Value Score

Arrays and File Input

11/19/2014. Arrays. Chapter 6: Arrays. Arrays. Arrays. Java Software Solutions for AP* Computer Science A 2nd Edition

Java I/O and Control Structures

Selection and Repetition

CSC 1051 Data Structures and Algorithms I

Algorithms and Java basics: pseudocode, variables, assignment, and interactive programs

Using Classes and Objects

Algorithms in everyday life. Algorithms. Algorithms and Java basics: pseudocode, variables, assignment, and interactive programs

CSC 1051 Arrays - Review questions

Algorithms and Java basics: pseudocode, variables, assignment, and interactive programs

Iterators and File Input

2: Basics of Java Programming

Algorithms in everyday life. Algorithms. Algorithms and Java basics: pseudocode, variables, assignment, and interactive programs

Happy Cinco de Mayo!!!!

Chapter 8 Arrays. Java Software Solutions. Foundations of Program Design Seventh Edition. John Lewis William Loftus

Arrays in Java Multi-dimensional Arrays

Chapter 7: Arrays CS 121. April 9, Department of Computer Science College of Engineering Boise State University. Chapter 7: Arrays CS / 41

Happy Cinco de Mayo!!!!

Algorithms and Conditionals

Basics of Java Programming variables, assignment, and input

Control flow, conditionals, boolean expressions, block statements, nested statements. Course website:

Designing Classes. Where do objects come from? Where do objects come from? Example: Account datatype. Dr. Papalaskari 1

7.3 Arrays of Strings (Objects) 7.3 Arrays of Strings (Objects) 7.3 Tunes.java. 7.3 Arrays of Objects 9/11/13. ! A UML diagram for the Tunes program

Improved algorithm. Java code. Control flow and conditionals CSC 1051 Villanova University. Dr Papalaskari 1. Java Programè Algorithm

Java code. Updated program. Control flow and conditionals CSC 1051 Villanova University. Dr Papalaskari 1. Java Programè Algorithm. Improved algorithm

CSC 1051 Algorithms and Data Structures I. Midterm Examination October 7, Name:

I/O Streams. program. Standard I/O. File I/O: Setting up streams from files. program. File I/O and Exceptions. Dr. Papalaskari 1

I/O Streams. program. Standard I/O. File I/O: Setting up streams from files. program. File I/O and Exceptions. Dr. Papalaskari 1

Where do objects come from? Good question!

CSC 1051 Algorithms and Data Structures I. Final Examination December 20, Name: KEY. Question Value Score

Chapter. Let's explore some other fundamental programming concepts

CSC 1051 Data Structures and Algorithms I. Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University

Data Representation Classes, and the Java API

CSC 1051 Data Structures and Algorithms I. Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University

I/O Streams. program. Standard I/O. File I/O: Setting up streams from files. program. File I/O and Exceptions. Dr. Papalaskari 1

Introduction to Computer Science Unit 2. Exercises

Arrays. Here is the generic syntax for an array declaration: type[] <var_name>; Here's an example: int[] numbers;

File I/O and Exceptions

Chapter 8 Multi-Dimensional Arrays

Lecture 3: Variables and assignment

Using Classes and Objects

Lesson 9: Introduction To Arrays (Updated for Java 1.5 Modifications by Mr. Dave Clausen)

AL GHURAIR UNIVERSITY College of Computing. Objectives: Examples: Text-printing program. CSC 209 JAVA I

Using Classes and Objects

BİLGE KÖROĞLU. Lecture Notes (May 2 4, 2007) METHOD DECOMPOSITION and ARRAYS

(A) 99 (B) 100 (C) 101 (D) 100 initial integers plus any additional integers required during program execution

CSC 2014 Java Bootcamp. Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University

Manipulating One-dimensional Arrays

CS5000: Foundations of Programming. Mingon Kang, PhD Computer Science, Kennesaw State University

Computational Expression

AP CS Unit 3: Control Structures Notes

This Week s Agenda (Part A) CS121: Computer Programming I. The Games People Play. Data Types & Structures. The Array in Java.

Oct Decision Structures cont d

Exam 2. Programming I (CPCS 202) Instructor: M. G. Abbas Malik. Total Marks: 40 Obtained Marks:

CONTENTS: Array Usage Multi-Dimensional Arrays Reference Types. COMP-202 Unit 6: Arrays

CSC 1051 Algorithms and Data Structures I. Final Examination May 12, Name

COE 211/COE 212 Computer/Engineering Programming. Welcome to Exam II Thursday December 20, 2012

CSC 1051 Algorithms and Data Structures I. Midterm Examination October 6, Name:

(A) 99 ** (B) 100 (C) 101 (D) 100 initial integers plus any additional integers required during program execution

Object-Oriented Design. Chapter. Class Relationships. Classes in a software system can have various types of relationships to each other

Faculty of Science Midterm. COMP-202B - Introduction to Computing I (Winter 2008)

CSC 1051 Algorithms and Data Structures I. Final Examination December 17, Name:

class declaration Designing Classes part 2 Getting to know classes so far Review Next: 3/18/13 Driver classes:

Transcription:

Arrays CSC 2014 Java Bootcamp Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University Some slides in this presentation are adapted from the slides accompanying Java Software Solutions by Lewis & Loftus Java Bootcamp Dr. Papalaskari Villanova University Arrays An array is an ordered list of values: 0 1 2 3 4 5 6 7 8 9 7.9 8.7 9.4 8.2 6.7 9.8 8.7 8.1 7.4 9.1 This array holds 10 values of type double that are indexed from 0 to 9 Dr. Papalaskari 1

Arrays - Overview element type Instantiation: Declaration: double[] scores = new double[10]; The entire array has a single name index array element scores[2] scores Initialization: scores[0] = 7.9; scores[1] = 8.7; scores[2] = 9.4; scores[3] = 8.2; scores[4] = 6.7; scores[5] = 9.8; scores[6] = 8.7; scores[7] = 8.1; scores[8] = 7.4; scores[9] = 9.1; 0 1 2 3 4 5 6 7 8 9 7.9 8.7 9.4 8.2 6.7 9.8 8.7 8.1 7.4 9.1 This array holds 10 values of type double that are indexed from 0 to 9 The size of the array is given by: scores.length = 10 Alternative declaration/instantiation/initialization: double[] scores = 7.9, 8.7, 9.4, 8.2, 6.7, 9.8, 8.7, 8.1, 7.4, 9.1; Arrays - Declaration element type Declaration: double[] scores The entire array has a single name scores 0 1 2 3 4 5 6 7?... Dr. Papalaskari 2

Arrays - Instantiation element type Instantiation: Declaration: double[] scores = new double[10]; The entire array has a single name index array element scores[2] scores 0 1 2 3 4 5 6 7 8 9 Size of array scores.length 10 Arrays - Initialization element type Instantiation: Declaration: double[] scores = new double[10]; The entire array has a single name index array element scores[2] scores Initialization: scores[0] = 7.9; scores[1] = 8.7; scores[2] = 9.4; scores[3] = 8.2; scores[4] = 6.7; scores[5] = 9.8; scores[6] = 8.7; scores[7] = 8.1; scores[8] = 7.4; scores[9] = 9.1; 0 1 2 3 4 5 6 7 8 9 7.9 8.7 9.4 8.2 6.7 9.8 8.7 8.1 7.4 9.1 Size of array scores.length 10 Dr. Papalaskari 3

Declaring and instantiating Arrays Some more examples: int[] weights = new int[2000]; boolean[] flags; flags = new boolean[20]; char[] codes = new char[1750]; double[] prices = new double[500]; Using Arrays Array elements can be assigned a value, printed, or used in a calculation. Examples: System.out.println ("Top = " + scores[5]); mean = (scores[0] + scores[1])/2; scores 0 1 2 3 4 5 6 7 8 9 7.9 8.7 9.4 8.2 6.7 9.8 8.7 8.1 7.4 9.1 scores[3] = 7 + Math.random(); scores[scores.length 1] = 9.0; double String num answer = scores[rand.nextint(10)]; = args[0]; Dr. Papalaskari 4

Try this: Write some Java code to create an array declare and instantiate an array ratings that holds 5 values type int ratings 0 1 2 3 4 declare and instantiate an array vowel to hold 5 values of type char, then initialize its values to the vowels a, e, i, o, u vowel 0 1 2 3 4 a e i o u vowel.length 5 What gets printed? System.out.println (scores[8] + 1); scores 0 1 2 3 4 5 6 7 8 9 7.9 8.7 9.4 8.2 6.7 9.8 8.7 8.1 7.4 9.1 System.out.println (scores[1] + scores[2]); System.out.println (scores[1 + 2]); System.out.println(scores[scores.length 2]); Dr. Papalaskari 5

Show how scores values change: values? è scores 0 1 2 3 4 5 6 7 8 9 7.9 8.7 9.4 8.2 6.7 9.8 8.7 8.1 7.4 9.1 scores 0 1 2 3 4 5 6 7 8 9 scores[4] = 1; scores[5] = scores[0] + 1; scores[3] = scores[1] + scores[2]); scores[scores.length 2]) = 5.5; Processing Arrays using for-loops: 1) draw a picture of the resulting array double[] mylist = new double[10]; for (int i = 0; i < 10; i++) mylist[i] = 0; for (int i = 0; i < 10; i++) mylist[i] = i; Dr. Papalaskari 6

Processing Arrays using for-loops: 2) Reversing through double[] tinyscores = new double[5]; for (int i = 4; i >= 0; i--) System.out.println(tinyScores[i]); Output: tinyscores 0 1 2 3 4 7.9 8.7 9.4 8.2 6.7 Processing Arrays using for-loops: 3) write a for-loop to print the values in the vowel array (going forward) vowel 0 1 2 3 4 a e i o u 4) write a for-loop to print the values in the vowel array (going backward) Dr. Papalaskari 7

Bounds Checking An array index must specify a valid element Example: If an array codes holds 100 values, it can be indexed from 0 to 99. If the value of count is 100, then System.out.println(codes[count]); causes an ArrayIndexOutOfBoundsException It s common to introduce off-by-one errors when using arrays: problem for (int index=0; index <= 100; index++) codes[index] = index*50 + epsilon; Initializer Lists Alternative way to declare, instantiate, and initialize an array. For example: int[] ratings = 4, 3, 3, 1, 4, 2, 1, 0, 3, 4; char[] grades = 'A', 'B', 'C', 'D', F'; NOTE: the new operator is not used size of array is determined by the number of items listed can only be used in the array declaration Dr. Papalaskari 8

The for-each Loop A simple way of processing every array element: for (double score : scores) System.out.println (score); NOTE: Only appropriate when processing all array elements starting at index 0 It can't be used to set the array values Another example String[] animals = "dog", "cat", "mouse", "fox"; for (String word : animals) System.out.println ("The " + word + " ate the cake" ); NOTE: Only appropriate when processing all array elements starting at index for (String word : animals) for (String otherword: animals) System.out.println ("The " + word + " ate the " + otherword); Dr. Papalaskari 9

Try this: Use the for each loop to scan through an array of int containing ratings (range: 0-4) and count up how many 4 s. int[] ratings = 4, 3, 3, 1, 4, 3, 1, 0, 3, 4; Try this: Repeat, but now count up the 0 s, 1 s, 4 s Use a separate array for this int[] ratings = 4, 3, 3, 1, 4, 3, 1, 0, 3, 4; Dr. Papalaskari 10

More array examples (see textbook): BasicArray.java Primes.java ReverseOrder.java LetterCount.java //******************************************************************** // ReverseOrder.java Author: Lewis/Loftus // // Demonstrates array index processing. //******************************************************************** import java.util.scanner; public class ReverseOrder //----------------------------------------------------------------- // Reads a list of numbers from the user, storing them in an // array, then prints them in the opposite order. //----------------------------------------------------------------- public static void main (String[] args) Scanner scan = new Scanner (System.in); continue double[] numbers = new double[10]; System.out.println ("The size of the array: " + numbers.length); Dr. Papalaskari 11

continue for (int index = 0; index < numbers.length; index++) System.out.print ("Enter number " + (index+1) + ": "); numbers[index] = scan.nextdouble(); System.out.println ("The numbers in reverse order:"); for (int index = numbers.length-1; index >= 0; index--) System.out.print (numbers[index] + " "); Sample Run The size of the array: 10 Enter number 1: 18.36 Enter continue number 2: 48.9 Enter number 3: 53.5 for (int index = 0; index < numbers.length; index++) Enter number 4: 29.06 Enter number System.out.print 5: 72.404 ("Enter number " + (index+1) + ": "); Enter number numbers[index] 6: 34.8 = scan.nextdouble(); Enter number 7: 63.41 Enter number 8: 45.55 Enter number System.out.println 9: 69.0 ("The numbers in reverse order:"); Enter number 10: 99.18 for (int index = numbers.length-1; index >= 0; index--) The numbers in reverse order: System.out.print (numbers[index] + " "); 99.18 69.0 45.55 63.41 34.8 72.404 29.06 53.5 48.9 18.36 places numbers in an array, then prints them out backward alternatively, we could place the numbers in the array backward and then print them forward Dr. Papalaskari 12

Another example: Computing letter frequency counts Sample run: Enter a sentence: In Casablanca, Humphrey Bogart never says "Play it again, Sam." A: 0 a: 10 B: 1 b: 1 C: 1 c: 1 D: 0 d: 0 E: 0 e: 3 Let s write a program to do this //******************************************************************** // LetterCount.java Author: Lewis/Loftus // // Demonstrates the relationship between arrays and strings. //******************************************************************** import java.util.scanner; public class LetterCount //----------------------------------------------------------------- // Reads a sentence from the user and counts the number of // uppercase and lowercase letters contained in it. //----------------------------------------------------------------- public static void main (String[] args) final int NUMCHARS = 26; continue Scanner scan = new Scanner (System.in); int[] upper = new int[numchars]; int[] lower = new int[numchars]; char current; // the current character being processed int other = 0; // counter for non-alphabetics Dr. Papalaskari 13

continue System.out.println ("Enter a sentence:"); String line = scan.nextline(); // Count the number of each letter occurence for (int ch = 0; ch < line.length(); ch++) current = line.charat(ch); if (current >= 'A' && current <= 'Z') upper[current-'a']++; else if (current >= 'a' && current <= 'z') lower[current-'a']++; else other++; // Print the results System.out.println (); for (int letter=0; letter < upper.length; letter++) System.out.print ( (char) (letter + 'A') ); System.out.print (": " + upper[letter]); System.out.print ("\t\t" + (char) (letter + 'a') ); System.out.println (": " + lower[letter]); System.out.println (); System.out.println ("Non-alphabetic characters: " + other); Sample Run Enter a sentence: In Casablanca, Humphrey Bogart never says "Play it again, Sam." continue A: 0 // Print a: the 10 results B: 1 System.out.println b: 1 (); C: 1 for (int letter=0; c: 1 letter < upper.length; letter++) D: 0 d: 0 E: 0 System.out.print e: 3 ( (char) (letter + 'A') ); F: 0 System.out.print f: 0 (": " + upper[letter]); System.out.print ("\t\t" + (char) (letter + 'a') ); G: 0 g: 2 Sample Run (continued) System.out.println (": " + lower[letter]); H: 1 h: 1 R: 0 r: 3 I: 1 i: 2 S: 1 s: 3 J: 0 System.out.println j: 0 (); T: 0 t: 2 K: 0 System.out.println k: 0 ("Non-alphabetic characters: " + other); U: 0 u: 1 L: 0 l: 2 V: 0 v: 1 M: 0 m: 2 W: 0 w: 0 N: 0 n: 4 X: 0 x: 0 O: 0 o: 1 Y: 0 y: 3 P: 1 p: 1 Z: 0 z: 0 Q: 0 q: 0 continue Non-alphabetic characters: 14 Dr. Papalaskari 14

What does it mean to copy an array? Suppose we have two arrays: int[] a = 147, 323, 89, 933; int[] b = 100, 200, 300, 400; Copying elements vs. copying array variables: for (int i=0; i<a.length; i++) a[i] = b[i]; a = b; Afterwards, what is the effect of the following? a[1] = 1111; b[2] = 2222; 1) Copying elements: a 0 1 2 3 147 323 89 933 b 0 1 2 3 100 200 300 400 What changes? for (int i=0; i<a.length; i++) a[i] = b[i]; a[1] = 1111; b[2] = 2222; Dr. Papalaskari 15

2) Copying array variables: a 0 1 2 3 147 323 89 933 b 0 1 2 3 100 200 300 400 What changes? a = b; a[1] = 1111; b[2] = 2222; Two-Dimensional Arrays A one-dimensional array stores a list of elements A two-dimensional array can be thought of as a table of elements, with rows and columns one dimension two dimensions Dr. Papalaskari 16

Two-Dimensional Arrays To be precise, in Java a two-dimensional array is an array of arrays A two-dimensional array is declared by specifying the size of each dimension separately: int[][] table = new int[12][50]; A array element is referenced using two index values: value = table[3][6] The array stored in one row can be specified using one index declaration 2D Arrays - Overview double[][] coursegrade = new double[3][10]; coursegrade 2D array element coursegrade[1][4] 0 1 2 3 4 5 6 7 8 9 7.9 8.7 9.4 8.2 6.7 9.8 8.7 8.1 7.4 9.1 0 1 2 0 1 2 3 4 5 6 7 8 9 9.3 5.8 6.9 5.5 9.0 8.3 7.7 9.2 9.8 8.2 0 1 2 3 4 5 6 7 8 9 8.9 8.0 8.4 6.2 7.7 7.3 9.6 6.1 7.8 7.3 array element (a row) coursegrade[2] Dr. Papalaskari 17

Two-Dimensional Arrays Expression Type Description table int[][] 2D array of integers, or array of integer arrays table[5] int[] array of integers table[5][12] int integer See TwoDArray.java See SodaSurvey.java //******************************************************************** // TwoDArray.java Author: Lewis/Loftus // // Demonstrates the use of a two-dimensional array. //******************************************************************** public class TwoDArray //----------------------------------------------------------------- // Creates a 2D array of integers, fills it with increasing // integer values, then prints them out. //----------------------------------------------------------------- public static void main (String[] args) int[][] table = new int[5][10]; // Load the table with values for (int row=0; row < table.length; row++) for (int col=0; col < table[row].length; col++) table[row][col] = row * 10 + col; // Print the table for (int row=0; row < table.length; row++) for (int col=0; col < table[row].length; col++) System.out.print (table[row][col] + "\t"); System.out.println(); Dr. Papalaskari 18

//******************************************************************** // TwoDArray.java Author: Lewis/Loftus // // Demonstrates the use of a two-dimensional array. //******************************************************************** Output 0 1 2 3 4 5 6 7 8 9 public class TwoDArray 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 //----------------------------------------------------------------- 31 32 33 34 35 36 37 38 39 40 // 41 Creates 42 a 2D array 43 of integers, 44 45 fills it 46 with increasing 47 48 49 // integer values, then prints them out. //----------------------------------------------------------------- public static void main (String[] args) int[][] table = new int[5][10]; // Load the table with values for (int row=0; row < table.length; row++) for (int col=0; col < table[row].length; col++) table[row][col] = row * 10 + col; // Print the table for (int row=0; row < table.length; row++) for (int col=0; col < table[row].length; col++) System.out.print (table[row][col] + "\t"); System.out.println(); Multidimensional Arrays An array can have many dimensions if it has more than one dimension, it is called a multidimensional array Each dimension subdivides the previous one into the specified number of elements Each dimension has its own length constant Because each dimension is an array of array references, the arrays within one dimension can be of different lengths these are sometimes called ragged arrays Dr. Papalaskari 19