Presentation is loading. Please wait.

Presentation is loading. Please wait.

An introduction to arrays. Problem: a hotel reservation system  Say we have a hotel of 100 rooms and we need to know if the rooms are occupied or not.

Similar presentations


Presentation on theme: "An introduction to arrays. Problem: a hotel reservation system  Say we have a hotel of 100 rooms and we need to know if the rooms are occupied or not."— Presentation transcript:

1 An introduction to arrays

2 Problem: a hotel reservation system  Say we have a hotel of 100 rooms and we need to know if the rooms are occupied or not.  What data type should we use to indicate whether or not a particular room is occupied?

3 One solution:  Let’s declare 100 boolean variables (one for each room). //false will indicate that the room is not // occupied boolean room1 = false; boolean room2 = false; … boolean room100 = false;

4 How can we determine if a particular room is occupied?

5 How do we determine if a particular room is occupied (w/ an if)? int which = in.nextInt(); if (which==1) { if (room1)System.out.println( “ occupied” ); else System.out.println( “ not occupied” ); } else if (which==2) { if (room2)System.out.println( “ occupied” ); else System.out.println( “ not occupied” ); } else if (which==3) { … } else if (which==100) { if (room100)System.out.println( “ occupied” ); else System.out.println( “ not occupied” ); }

6 Is a switch any better?

7 How do we determine if a particular room is occupied (w/ a switch)? int which = in.nextInt(); switch (which) { case 1:if (room1)System.out.println( “ occupied” ); else System.out.println( “ not occupied” ); break; case 2:if (room2)System.out.println( “ occupied” ); else System.out.println( “ not occupied” ); break; case 3:… case 100: if (room100)System.out.println( “ occupied” ); else System.out.println( “ not occupied” ); break; }

8 What if we want to determine the # of rooms that are occupied?

9 int count = 0; if (room1)++count; if (room2)++count; … if (room100)++count; System.out.println( count + " rooms are occupied." );

10 More hotel problems:  What if we add more rooms to our hotel?  What if we want to see if we have a block (say 3) of adjacent rooms available?  Our current approach quickly becomes unwieldy!  So let’s introduce something new (arrays) to help us.

11 Recall scalars and vectors from math.  Scalar – one number  Vectors – list of numbers Vector X = Or more generally, X = subscript

12 Arrays  List of the same type of things.  Subscript (numbering) starts with 0.  How do we declare an array? int x[] = new int [ 100 ];  How do we refer to a particular int? x[0] = 1;//first one x[1] = 7; … x[99] = 52;//last one

13 Hint: Remember that an array of 100 elements is subscripted by

14 What happens if I try the following? int ray[] = new int [100];// ok System.out.println( ray[-1] );// ? int k = ray[100];// ?

15 What happens if I try the following? int ray[] = new int [100]; System.out.println( ray[-1] ); int k = ray[100]; Boom!

16 How long (how many elements) is an array?  Ask it! int howLongIsMyArray = a.length; (Reminds one of.length() and Strings.)

17 Back to the room reservation problem (now using arrays).  It becomes much easier!  How can we use arrays?

18 Back to the room reservation problem (now using arrays).  It becomes much easier! final intN = 100; //# of rooms booleanrooms[] = new boolean[ N ]; //init all rooms to unoccupied How?

19 Back to the room reservation problem (now using arrays).  It becomes much easier! final intN = 100; //# of rooms booleanrooms[] = new boolean[ N ]; //init all rooms to unoccupied for (int i=0; i

20 Back to the room reservation problem (now using arrays).  It becomes much easier! final intN = 100; //# of rooms booleanrooms[] = new boolean[ N ]; //init all rooms to unoccupied for (int i=0; i

21 Back to the room reservation problem (now using arrays).  It becomes much easier! final intN = 100; //# of rooms booleanrooms[] = new boolean[ N ]; //init all rooms to unoccupied for (int i=0; i

22 Back to the room reservation problem (now using arrays).  It becomes much easier! final intN = 100; //# of rooms booleanrooms[] = new boolean[ N ]; final boolean occupied = true; //init all rooms to unoccupied for (int i=0; i

23 Back to the room reservation problem (now using arrays).  It becomes much easier! final intN = 100; //# of rooms booleanrooms[] = new boolean[ N ]; final boolean occupied = true; //init all rooms to unoccupied for (int i=0; i

24 Interesting code to write:  Write a piece of code to find a free room. It should determine the free room #. (It should yield -1 if no rooms are free.)  Can you write this code?

25 Interesting code to write:  Write a piece of code to randomly find a free room. It should determine the free room #. It should yield -1 if no rooms are free.  Why is this a better approach in practice (in the “real world”)?  Can you write this code?

26 Interesting code to write:  Write a piece of code to count the total number of free rooms. Or conversely, write a piece of code to count the number of rooms in use.  Can you write this code?

27 Interesting code to write:  Write a piece of code to find a block of 3 free rooms.  It should determine the lowest room number of the 3 free rooms (otherwise, -1).  Can you write this code?

28 Interesting code to write:  Use another array for wakeup calls.  Use another array to indicate whether or not a room allows smoking or not.  Can you write this code?


Download ppt "An introduction to arrays. Problem: a hotel reservation system  Say we have a hotel of 100 rooms and we need to know if the rooms are occupied or not."

Similar presentations


Ads by Google