CONTENTS: Arrays Strings. COMP-202 Unit 5: Loops in Practice

Similar documents
COMP-202: Foundations of Programming. Lecture 4: Flow Control Loops Sandeep Manjanna, Summer 2015

COMP-202: Foundations of Programming. Lecture 5: Arrays, Reference Type, and Methods Sandeep Manjanna, Summer 2015

COMP-202 Unit 9: Exceptions

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

COMP-202 Unit 9: Exceptions

Example: Computing prime numbers

CONTENTS: While loops Class (static) variables and constants Top Down Programming For loops Nested Loops

Last Class. Introduction to arrays Array indices Initializer lists Making an array when you don't know how many values are in it

COMP-202 Unit 4: Programming with Iterations

Last Class. More on loops break continue A bit on arrays

COMP-202: Foundations of Programming. Lecture 8: for Loops, Nested Loops and Arrays Jackie Cheung, Winter 2016

Last Class. While loops Infinite loops Loop counters Iterations

COMP-202 More Complex OOP

COMP-202: Foundations of Programming. Lecture 9: Arrays and Practice Jackie Cheung, Winter 2016

Controls Structure for Repetition

COMP-202: Foundations of Programming. Lecture 7: Strings and Methods Jackie Cheung, Winter 2015

Primitive vs Reference

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction

Warm-Up: COMP Programming with Iterations 1

Michele Van Dyne Museum 204B CSCI 136: Fundamentals of Computer Science II, Spring

EXCEPTIONS. Fundamentals of Computer Science I

BBM 102 Introduction to Programming II Spring Exceptions

COMP-202 Unit 2: Java Basics. CONTENTS: Using Expressions and Variables Types Strings Methods

Garbage Collection (1)

Computer Science is...

4. Java Project Design, Input Methods

Object Oriented Programming. Java-Lecture 6 - Arrays

CS S-08 Arrays and Midterm Review 1

Topic 5: Enumerated Types and Switch Statements

COMP 250: Java Programming I. Carlos G. Oliver, Jérôme Waldispühl January 17-18, 2018 Slides adapted from M. Blanchette

Intro. Scheme Basics. scm> 5 5. scm>

Topic 4 Expressions and variables

CS 251 Intermediate Programming Java Basics

Object Oriented Programming Exception Handling

Warmup : Name that tune!

array Indexed same type

CS159. Nathan Sprague

Agenda CS121/IS223. Reminder. Object Declaration, Creation, Assignment. What is Going On? Variables in Java

BBM 102 Introduction to Programming II Spring 2017

COMP-202: Foundations of Programming. Lecture 2: Java basics and our first Java program! Jackie Cheung, Winter 2015

6.001 Notes: Section 15.1

Arrays. Eng. Mohammed Abdualal

Programming - 2. Common Errors

Java Errors and Exceptions. Because Murphy s Law never fails

Bjarne Stroustrup. creator of C++

CSCI 261 Computer Science II

CS121/IS223. Object Reference Variables. Dr Olly Gotel

COMP-202 Unit 7: More Advanced OOP. CONTENTS: ArrayList HashSet (Optional) HashMap (Optional)

COMP-202: Foundations of Programming. Lecture 2: Variables, and Data Types Sandeep Manjanna, Summer 2015

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

Arrays and Lists CSC 121 Fall 2016 Howard Rosenthal

School of Computer Science CPS109 Course Notes Set 7 Alexander Ferworn Updated Fall 15 CPS109 Course Notes 7

Announcements. 1. Forms to return today after class:

Administration. Objects and Arrays. Objects. Agenda. What is an Object? What is a Class?

Building Java Programs

Arrays: An array is a data structure that stores a sequence of values of the same type. The data type can be any of Java s primitive types:

School of Computer Science CPS109 Course Notes 5 Alexander Ferworn Updated Fall 15

Building Java Programs. Chapter 2: Primitive Data and Definite Loops

Chapter 3. Selections

What did we talk about last time? Course overview Policies Schedule

Chapter 3. Ch 1 Introduction to Computers and Java. Selections

Introducing arrays. Week 4: arrays and strings. Creating arrays. Declaring arrays. Initialising arrays. Declaring and creating in one step

Example Program. public class ComputeArea {

Le L c e t c ur u e e 5 To T p o i p c i s c t o o b e b e co c v o e v r e ed e Exception Handling

CS 112 Introduction to Programming

CS 112 Introduction to Programming

CSC System Development with Java. Exception Handling. Department of Statistics and Computer Science. Budditha Hettige

Java Coding 3. Over & over again!

Wentworth Institute of Technology. Engineering & Technology WIT COMP1000. Java Basics

4. Java language basics: Function. Minhaeng Lee

CSCI 1103: File I/O, Scanner, PrintWriter

COMP-202: Foundations of Programming. Lecture 3: Boolean, Mathematical Expressions, and Flow Control Sandeep Manjanna, Summer 2015

CS 170 Section 3, Spring 2015 Programming in Java Midterm Exam 1. Name (print):

Final Exam Practice. Partial credit will be awarded.

Building Java Programs

false, import, new 1 class Lecture2 { 2 3 "Data types, Variables, and Operators" 4

COMP-202 Unit 2: Java Basics. CONTENTS: Printing to the Screen Getting input from the user Types of variables Using Expressions and Variables

Computer Science is...

CISC-124. This week we continued to look at some aspects of Java and how they relate to building reliable software.

Constants. Why Use Constants? main Method Arguments. CS256 Computer Science I Kevin Sahr, PhD. Lecture 25: Miscellaneous

Introduction to Programming Using Java (98-388)

1.3 Conditionals and Loops

Building Java Programs

CS111: PROGRAMMING LANGUAGE II

CS1020 Data Structures and Algorithms I Lecture Note #8. Exceptions Handling exceptional events

Give one example where you might wish to use a three dimensional array

CISC-124. Dog.java looks like this. I have added some explanatory comments in the code, and more explanation after the code listing.

CEN 414 Java Programming

Administration. Exceptions. Leftovers. Agenda. When Things Go Wrong. Handling Errors. CS 99 Summer 2000 Michael Clarkson Lecture 11

Programming assignment A

COMP-202 Unit 8: Recursion. CONTENTS: Recursion in Java More complex examples

LOOPS. Repetition using the while statement

COMP 110 Programming Exercise: Simulation of the Game of Craps

Arrays and Lists CSC 121 Fall 2015 Howard Rosenthal

CS115. Chapter 17 Exception Handling. Prof. Joe X. Zhou Department of Computer Science. To know what is exception and what is exception handling

COMP-202 Unit 6: The Basics of Object Oriented Programming. CONTENTS: Organizing data and methods into Objects Reference types

COE318 Lecture Notes Week 3 (Week of Sept 17, 2012)

CS 113 PRACTICE FINAL

6.001 Notes: Section 8.1

Lesson 10: Quiz #1 and Getting User Input (W03D2)

Transcription:

CONTENTS: Arrays Strings COMP-202 Unit 5: Loops in Practice

Computing the mean of several numbers Suppose we want to write a program which asks the user to enter several numbers and then computes the average of them. COMP-202 - Programming Basics 2

First, think of what we need to do at a high level 1)We need to ask the user to enter numbers and store the result into a variable. 2)We need to repeat this several times 3)As we go, we should store the sum of the numbers they have entered 4)At the end, divide by the total number of numbers they entered. COMP-202 - Programming Basics 3

First, think of what we need to do at a high level 1)We need to ask the user to enter numbers and store the result into a variable. -->Scanner 2)We need to repeat this several times -->For loop 3)As we go, we should store the sum of the numbers they have entered -->Variable that we keep adding to 4)At the end, divide by the total number of numbers they entered. -->Store how many numbers they enter (additional variable) COMP-202 - Programming Basics 4

First, think of what we need to do at a high level import java.util.scanner; public class MeanProgram { public static void main(string[] args) { final int TOTAL_NUM = 100; double total = 0; Scanner reader = new Scanner(System.in); for (int i = 0; i < TOTAL_NUM; i++) { double nextnumber = reader.nextdouble(); total += nextnumber; } System.out.println(total / TOTAL_NUM); } COMP-202 - Programming Basics 5

What if, we needed to store all these numbers? For example, if you were computing the standard deviation of the numbers, you need to store the numbers in order to do the computation. Denote by X the mean of all the values. Then the standard deviation of x1, x2...,x100 is: std(x1,...x100) = sqrt( sum(x_i X)^2 / n-1 ) There is no way to compute this without storing all 100 numbers. How can we do this? COMP-202 - Programming Basics 6

Option 1 (bad option) Store the 100 numbers into 100 different, unrelated variables. int fml1, fml2, fml3, fml4, fml5, fml6, fml7, fml8, fml9, fml10, fml11, fml12, fml13, fml14, fml15, fml16, fml17, fml18, fml19, fml20, fml21, fml22, fml23, fml24, fml25, fml26, fml27, /*okay I'm tired of typing all these fml's. I need a drink now...*/ fml99, fml100; COMP-202 - Programming Basics 7

Option 1 (bad option) COMP-202 - Programming Basics 8

Problems with this? The problems with this are kind of obvious: -Really annoying to write -The only way to understand this is to have several drinks. This means the user will be drunk if he has to do this more than a couple times (well, I guess it's debatable if this is bad :) ) -The user will be hungover the next morning if he has to do this more than a couple times (okay this one's definitely bad) -Easy to make an error (sound familiar?) COMP-202 - Programming Basics 9

Problems with this? Most importantly, this technique does not take advantage of ANY of the looping techniques we have just used! If we want to store these numbers, we can't use a while loop or a for loop. So we spent time learning this cool thing called loops and now we can't even use it. :( COMP-202 - Programming Basics 10

COMP-202 - Programming Basics 11

Part 1: Arrays

Array Definition An array is a container object that holds a fixed number of values of a single type. The length of an array is established when the array is created. After creation, its length is fixed. (From http://download.oracle.com/javase/tutorial/java/nu tsandbolts/arrays.html) COMP-202 - Programming Basics 13

Array Definition What this means, is we can store many values of the same type into a single array. This allows us to group related values into a single object Because it is all in one object, we can access the values in the array using the same variable. COMP-202 - Programming Basics 14

Array type For any type, you can create an array variable of that type, by writing type[] instead of type COMP-202 - Programming Basics 15

Example public static void main(string[] args) args, is a variable of type String array COMP-202 - Programming Basics 16

Purpose of array When you create an array, you create an object which contains many values of a specific type. The point is to group together similar pieces of data into one piece of data. COMP-202 - Programming Basics 17

Examples of array variables String[] classlist; //used to store a list of names int[] grades; /*used to store all the grades of 1 person or 1 grade per student boolean[] wins; //used to store results of a game String[] friendslist; /*used to store a list of friends but only if you are popular! */ COMP-202 - Programming Basics 18

Creating an array When you create an array, you have to specify how big to make the array. In other words, how many values should the array store. There are 2 ways to do this: COMP-202 - Programming Basics 19

Initializer List: At the same time as you declare an array variable, you provide a list of the elements to fill in: type[] variablename = {exp1, exp2, exp3}; exp1, exp2, exp3, etc all have to be of type type COMP-202 - Programming Basics 20

Example: Array of days of the week String[] days = { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }; COMP-202 - Programming Basics 21

Example: Arrays storing hockey results (a small array) int[] rangerswin = {1928, 1933, 1940, 1994, 2012}; int[] habswin = {1916,1924,1930,1931,1944,1946,1953,1956, 1957,1958,1959,1960,1965,1966,1968,1969,1971,19 72, 1973, 1976, 1977, 1978, 1979,1986,1993}; COMP-202 - Programming Basics 22

More general way... This way only works when you know ahead of time (i.e. as you are typing the code) how many values you want to store in your array. Very often, this is a reasonable assumption: -games in a hockey season -number of countries in North America -the number of wheels on a Hummer COMP-202 - Programming Basics 23

Sometimes, you don't know Sometimes, you will not know how many values you want to store: Example: -storing a list of books bought in an order from Amazon.com -storing a list of games won by the Montreal Canadiens -... COMP-202 - Programming Basics 24

new operator (1) In this case, you will use the new operator to create an array and specify how big it is: type[] variablename = new type[size]; This will create an array, referred to by the name variablename. The array will contain size values of type type. COMP-202 - Programming Basics 25

new operator (2) When you use this approach, you will have to set the values in a different step. It is not necessary to specify the size when you create the variable, but it is necessary when you create the array itself (using new) Scanner scanner = new Scanner(System.in); int numberquestions = scanner.nextint(); String[] jeopardy = new String[numberQuestions]; COMP-202 - Programming Basics 26

Using an array When you create an array of size n, you are creating n places in memory that can store values of that type. These places in memory are all contiguous. That is, they are all in a row. In addition to storing a value, each place is assigned an index. The index is what you use to access various values. COMP-202 - Programming Basics 27

boolean[] beatscasino False True False False False False False False False 0 1 2 3 4 5 6 7 8 Here is an array with 9 values in it. The casino almost always wins, and indeed 8 values are false. One is true. COMP-202 - Programming Basics 28

boolean[] beatscasino False True False False False False False False False 0 1 2 3 4 5 6 7 8 Each spot of the array has a value and an index. COMP-202 - Programming Basics 29

boolean[] beatscasino False True False False False False False False False 0 1 2 3 4 5 6 7 8 The value is any legitimate value of the type of the array, in this case boolean. COMP-202 - Programming Basics 30

boolean[] beatscasino False True False False False False False False False 0 1 2 3 4 5 6 7 8 The index is an integer. Interestingly the counting starts from 0 instead of 1. COMP-202 - Programming Basics 31

Accessing values of beatscasino False True False False False False False False False 0 1 2 3 4 5 6 7 8 To get or set values of an array, we will use a similar syntax to a normal variable, except we have to specify which value of the array we wish to get or set. We do this by using the index. COMP-202 - Programming Basics 32

Accessing values of beatscasino False True False False False False False False False 0 1 2 3 4 5 6 7 8 System.out.println(beatsCasino[0]); // prints False beatscasino[1] = false; // sets the value at index 1 to be false if (!beatscasino[0] &&!beatscasino[1] ) { System.out.println( LOSER!!! ); } COMP-202 - Programming Basics 33

Checking if you lost all your games Let's say we want to test if we won any games at the casino. The naïve way to do this, would be to test every single value. (Remember that in a boolean expression it is not necessary to compare the boolean to true) if (beatscasino[0] beatscasino[1] beatscasino[2] beatscasino[3] beatscasino[4] beatscasino[5] beatscasino[6] beatscasino[7] beatscasino[8] ) { System.out.println( You won! ); } else { System.out.println( You're broke! ); } COMP-202 - Programming Basics 34

Smarter way... If we do this though, we are not taking advantage of the array at all. We are simply treating the 9 values completely separately. What we'd like to do is create a loop that checked all of these values. Each step of the loop will look at one value of the array. What is it that should change at each step? COMP-202 - Programming Basics 35

For loop : array int size = 9; boolean foundwinner = false; for (int i = 0; i < size; i++) { if (beatscasino[i]) { foundwinner = true; } } if (foundwinner) { System.out.println( You win ); } else { System.out.println( Sucker! ); } COMP-202 - Programming Basics 36

While loop : array int size = 9; int i = 0; boolean foundwinner = false; while (i < size) { if (beatscasino[i]) { foundwinner = true; } i++; } if (foundwinner) { System.out.println( You win ); } else { System.out.println( Sucker! ); } COMP-202 - Programming Basics 37

Arrays as Objects An array is a type of Object. An object is a collection of data along with methods/functions to work with the data. We have seen Objects before: String and Scanner In fact, except for the 8 primitive types, all types in Java are Objects. COMP-202 - Programming Basics 38

String as an Object Recall some of the things we can do with Strings. String university = McGill ; int size = university.length(); String breathingdevices = university.substring(2).tolowercase() + s This is because a String is an Object. In addition to data, a String also has associated methods/functions. You call these methods by writing the name of a variable referring to the Object you are interested in, followed by a dot, followed by the name of the method (and any arguments the method requires) The significance is that the substring method will differ depending on which String the method is called upon! COMP-202 - Programming Basics 39

Properties of Objects In addition to calling methods on Objects, you can also access properties of Objects. To access a property, you can do it the same way as a method, except there are no ( ) and no arguments inside. In the case of an array, there is just 1 property, and there are no methods. COMP-202 - Programming Basics 40

Array property : length When you have an array stored into a variable, you can access the length of the array by writing: variablename.length For example: int[] numbers = {1, 5, 9, 11, 3, 4}; int arraysize = numbers.length; This accesses the property called length of the array referred to by the variable arraysize. COMP-202 - Programming Basics 41

Preview:Reference vs Primitive Types(1) When we write int x = 10; what we are technically doing is the following: 1)Creating a space in memory that will store an int 2)Specifying that whenever we use the identifier x later in our program, we want to access that memory location. 3)Storing the value of 10 into that memory location. COMP-202 - Programming Basics 42

Preview : References One tricky concept that we will see is that a variable of any Object type, does NOT actually store the DATA inside the variable! It actually stores the address in memory that the data is located. We will see the consequences of this in the next unit, but it can lead to some very weird results! An array is an Object, so that means the variable itself, does not actually store the data! It merely stores the address in memory of the data. COMP-202 - Programming Basics 43

Preview:Reference vs Primitive Types(2) When we write int x[] = {10, 3, 5}; what we are technically doing is the following: 1)Creating a space in memory that will store the address of an int array. 2)Specifying that whenever we use the identifier x later in our program, we want to access that space in memory (which stores an address). 3)Creating an array somewhere else in memory. That array will store the values 10, 3, and 5 and have length of 3. That array must be located somewhere in memory. Call that address a 4)Setting the value of x to be a. (In other words, store into the space of memory reserved for the variable x, the value of a) COMP-202 - Programming Basics 44

Consequence of Reference Types There are some interesting consequences of storing addresses into variables instead of the values. int[] x = {1, 2, 3}; int[] y = x; y[0] = 2; System.out.println(x[0]); What do you think the above prints? COMP-202 - Programming Basics 45

Consequence of Reference Types There are some interesting consequences of storing addresses into variables instead of the values. int[] x = {1, 2, 3}; int[] y = x; y[0] = 2; System.out.println(x[0]); What do you think the above prints? It actually prints 2! Because changing y[0] also changes x[0] COMP-202 - Programming Basics 46

Step by step: Memory 0 4... 1000 1004 1008...2000 2004 2008 1 2 3 1000 Addresses Values int[] x = {1, 2, 3}; COMP-202 - Programming Basics 47

Step by step: Memory 0 4... 1000 1004 1008...2000 2004 2008 1 2 3 Addresses Values int[] x = {1, 2, 3}; The {1, 2, 3} creates an array in memory. The address of the start of this spot in memory is 1000. COMP-202 - Programming Basics 48

Step by step: Memory 0 4... 1000 1004 1008...2000 2004 2008 1 2 3 1000 Addresses Values int[] x = {1, 2, 3}; int[] x creates a variable of type int array. This means we create space in memory to store the address of an int array. In this case, we use the storage space in memory of 2000, to store the space 1000 x COMP-202 - Programming Basics 49

Step by step: Memory 0 4... 1000 1004 1008...2000 2004 2008 1 2 3 1000 Addresses Values int[] x = {1, 2, 3}; int[] y = x; x This means: 1)Create space in memory to store an int[] variable 2)Store into that int[] variable the value of the expression x COMP-202 - Programming Basics 50

Step by step: Memory 0 4... 1000 1004 1008...2000 2004 2008 1 2 3 1000 1000 Addresses Values int[] x = {1, 2, 3}; int[] y = x; x y This means: 1)Create space in memory to store an int[] variable 2)Store into that int[] variable the value of the expression x COMP-202 - Programming Basics 51

Step by step: Memory 0 4... 1000 1004 1008...2000 2004 2008 1 2 3 1000 1000 Addresses Values int[] x = {1, 2, 3}; int[] y = x; y[0] = 2; x y This means: 1)Assign to the first value of the array referred to by y, the value of the expression 2 COMP-202 - Programming Basics 52

Step by step: Memory 0 4... 1000 1004 1008...2000 2004 2008 2 2 3 1000 1000 Addresses Values int[] x = {1, 2, 3}; int[] y = x; y[0] = 2; x y This means: 1)Assign to the first value of the array referred to by y, the value of the expression 1 COMP-202 - Programming Basics 53

Step by step: Memory 0 4... 1000 1004 1008...2000 2004 2008 2 2 3 1000 1000 Addresses Values int[] x = {1, 2, 3}; int[] y = x; y[0] = 2; System.out.println(x[0]); x y So printing the first value stored in the array referred to by x now will print 2! COMP-202 - Programming Basics 54

Equality with arrays int[] x = {1,2,3}; int[] y = new int[3]; y[0] = 1; y[1] = 2; y[2] = 3; System.out.println(x == y); Do you think this prints true or false? COMP-202 - Programming Basics 55

Equality It actually prints false It does this because it is comparing the values of the variables. The value of each variable is just an address though! x and y refer to 2 different arrays which each happen to have the same values, but they are not the same array! This is why when you compare 2 Strings to each other, you should use.equals() instead of == COMP-202 - Programming Basics 56

Why? Why would they EVER make things so complicated? It turns out there are some very good reasons that will be crucial to the idea of object oriented programming. One useful feature is the ability to pass addresses of data means it's easier to share (and modify!) data between methods! COMP-202 - Programming Basics 57

Exceptions and Runtime Errors Sometimes, you will try to execute a command that is impossible to do for various reasons. In this case, you will generate an exception or runtime error. Normally, these will cause your program to crash, but we'll see ways that you can avoid your program crashing. COMP-202 - Programming Basics 58

Ex: Scanning for the wrong kind of value An example of a Runtime Error happens if you try to scan for an int and get a String: dan:~/comp202$ java ScannerTest Enter a number: foo Exception in thread "main" java.util.inputmismatchexception at java.util.scanner.throwfor(scanner.java:819) at java.util.scanner.next(scanner.java:1431) at java.util.scanner.nextint(scanner.java:2040) at java.util.scanner.nextint(scanner.java:2000) at ScannerTest.main(ScannerTest.java:4) COMP-202 - Programming Basics 59

Information from an Exception Exception in thread "main" java.util.inputmismatchexception at java.util.scanner.throwfor(scanner.java:819) at java.util.scanner.next(scanner.java:1431) at java.util.scanner.nextint(scanner.java:2040) at java.util.scanner.nextint(scanner.java:2000) at ScannerTest.main(ScannerTest.java:4) An Exception contains a lot of information to help you fix the problem: -The type of Exception -The line number and file that the exception occurred in -The stack trace which helps you see which methods called the method that crashed your program COMP-202 - Programming Basics 60

Divide by Zero Exception Another kind of exception is a divide by zero exception: dan:~/examples daniel$ java DivideByZero I'm going to divide 1 by 0 Exception in thread "main" java.lang.arithmeticexception: / by zero at DivideByZero.main(DivideByZero.java:4) This message contains the same sorts of information. COMP-202 - Programming Basics 61

Exceptions with arrays When we use arrays, there are 2 kinds of Exceptions that we must be careful to avoid: 1)ArrayIndexOutOfBoundsException 2)NullPointerException COMP-202 - Programming Basics 62

ArrayIndexOutOfBounds An ArrayIndexOutOfBounds exception occurs when you try to access an invalid index. This happens when you use an index < 0 or >= the length of the array: Ex: int[] x = {1, 2, 3}; System.out.println( x[-1] ); COMP-202 - Programming Basics 63

ArrayIndexOutOfBounds dan:~/examples daniel$ java ArrayOOB Exception in thread "main" java.lang.arrayindexoutofboundsexception: -1 at ArrayOOB.main(DivideByZero.java:4) The information in an ArrayIndexOutOfBoundsException is very similar to the other Exceptions. One useful thing is in addition to the stacktrace and line number, it provides the index that caused the ArrayIndexOutOfBoundsException (in this case -1) This is really useful when you have a complicated statement such as x[y/2*z]; COMP-202 - Programming Basics 64

NullPointerException The other kind of exception you get is a NullPointerException. This happens when you have an array variable but it is not actually assigned to an array! For example: int[] x; //creates a variable which can store the address of an int[] System.out.println(x.length) Because x does not actually contains the address of an array yet, it has no length. This causes a NullPointerException! Sometimes, the compiler will catch the error, but not always. COMP-202 - Programming Basics 65

Preview: Variables vs Objects Because variables of types that are not primitive store addresses, this means that we can create a variable but not actually an Object. There are thus three different steps: 1)Create a variable which could store the address of an Object 2)Create an Object 3)Link the variable to the Object COMP-202 - Programming Basics 66

Multidimensional Arrays So far, the elements of all the arrays we have seen have been simple values: primitive types or Strings Such arrays are one-dimensional However, we can create arrays whose elements are themselves one-dimensional arrays Such an array is really an array of arrays These arrays are two-dimensional arrays (or 2D arrays) COMP-202 - Arrays 67

Two-Dimensional Arrays Elements in a two dimensional array are accessed using two indices The first index specifies the one-dimensional array containing the element we want to access The second index specifies the element we want to access within the one-dimensional array specified by the first index COMP-202 - Arrays 68

Creating a 2d array Like 1d arrays, there are 2 ways to create a 2d array: 1)Initializer list 2)Using the new operator. COMP-202 - Arrays 69

Initializer List We said to create an array using an initializer list, you could write: type[] variablename = {exp1, exp2, exp3,...} where exp1, exp2, exp3, etc all evaluated to type Well, in this case type is just an array: COMP-202 - Arrays 70

Initializer List int[][] board = { {1,2,3}, {1,4}, {6,2} } This is creating an array of int[]. The first array in the array is {1,2,3} the second is {1,4} and the third is {6,2} COMP-202 - Arrays 71

Using the new keyword There are two ways to create a 2d array using the new keyword: 1)type[][] variablename= new type[size_1][size_2]; This creates a rectangular array. You can then fill in values or access values using 2 indices. COMP-202 - Arrays 72

Accessing values of a 2d array int[][] x = new int[3][4]; //creates an array which contains 3 arrays of size 4. x[0][1] = 3; //assigns to the 2 nd spot of the 1 st array, the value 3; x[2][3] = 10; //assigns to the 4 th spot of the 3 rd array, the value of 10; x[10][2] = 5; //causes an array out of bounds exception int[] y = x[2]; //stores into y the address of the 3 rd array COMP-202 - Arrays 73

Using the new keyword The second way to use the new keyword with 2d arrays is less commonly used but also possible. Since it is an array of arrays, you can create each array separately: COMP-202 - Arrays 74

Using the new keyword int[][] x = new int[4][]; //creates an array which will store 4 arrays x[0] = new int[5]; /*creates an array of size 5 and puts it into the first spot of the array x */ x[2] = new int[3]; /*creats an array of size 3 and puts it into the 3 rd spot of the array x */ COMP-202 - Arrays 75

Higher dimensional arrays You can actually create arrays of even more dimensions: int[][][][][][][][][][] x = new int[2][2][2][2][2][2][2][2][2][2]; creates a 10 dimensional array! COMP-202 - Arrays 76

Arrays and Strings in loops Both arrays and Strings translate very well to loop operations. We will see some examples in class of this. COMP-202 - Arrays 77

Useful String methods The following are some useful methods you can use to operate on a String. For all of the following, you have to provide an example of a String to call the method on. (e.g. foo.length() where foo is a variable of the type String). All of these return values without modifying the original String.length() - gets the length of a String.charAt(int i) gets the ith symbol of the String (count from 0).substring(a,b) gets String consisting of from a of the original up to but not including a+b.equals(string other) compare two Strings values to each other (since == compares addresses).compareto(string other) tells you which String is larger.indexof(char c) returns the index of the first instance of c.tolowercase() - returns a lowercase version of String COMP-202 - Arrays 78