Skip to content

Commit 1ecd7ec

Browse files
committed
Pet Hotel - Silver
1 parent 78f3b2b commit 1ecd7ec

1 file changed

Lines changed: 182 additions & 91 deletions

File tree

Maps/src/com/company/PetHotel.java

Lines changed: 182 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,14 @@
22

33
import java.util.Map;
44
import java.util.Scanner;
5+
import java.util.Set;
56
import java.util.TreeMap;
67

78
public class PetHotel
89
{
910
TreeMap<Integer, String> hotelRooms;
1011
private Scanner scanner;
1112

12-
private String petName;
13-
private int roomNumber;
14-
1513
public PetHotel()
1614
{
1715
hotelRooms = new TreeMap<>();
@@ -30,6 +28,9 @@ private void run()
3028
String command;
3129
String[] words;
3230

31+
String petName;
32+
int roomNumber;
33+
3334
do
3435
{
3536
int fromRoomNumber;
@@ -40,6 +41,16 @@ private void run()
4041
System.out.println("There aren't any pets here right now.");
4142
}
4243

44+
/* Valid commands:
45+
Checkin <petname> <roomNumber>;
46+
Checkout <petname> <roomNumber>;
47+
Move <petname> <fromRoomNumber> <toRoomNumber>;
48+
Swap <roomNumber> <roomNumber>;
49+
MoveOver (moves all pets to roomNumber + 1, 109 goes to 100)
50+
Occupancy (list occupants);
51+
CloseForSeason (clear map);
52+
Exit (ends program) */
53+
4354
System.out.print("Enter command: ");
4455
String inputLine = scanner.nextLine();
4556
words = inputLine.split(" ");
@@ -50,90 +61,26 @@ private void run()
5061
petName = words[1];
5162
roomNumber = Integer.parseInt(words[2]);
5263

53-
boolean roomExists = (roomNumber >= 100 && roomNumber <= 109);
54-
55-
if (!roomExists)
56-
{
57-
System.out.println("Sorry, we only have rooms 100 - 109. Please select a room that exists.");
58-
}
59-
else if (hotelRooms.get(roomNumber) != null)
60-
{
61-
System.out.println("Sorry, this room already has an occupant. Please select a different one.");
62-
}
63-
else if (hotelRooms.get(roomNumber) == null)
64-
{
65-
checkIn(petName, roomNumber);
66-
}
64+
checkIn(petName, roomNumber);
6765
}
6866
else if (command.equalsIgnoreCase("CheckOut"))
6967
{
70-
String petName = words[1];
68+
petName = words[1];
7169
roomNumber = Integer.parseInt(words[2]);
7270

73-
if (hotelRooms.get(roomNumber) == null)
74-
{
75-
System.out.println("Your pet is not in room number " + roomNumber + ".");
76-
}
77-
else
78-
{
79-
boolean roomExists = (roomNumber >= 100 && roomNumber <= 109);
80-
boolean isRightPet = hotelRooms.get(roomNumber).equalsIgnoreCase(petName);
81-
82-
if (!roomExists)
83-
{
84-
System.out.println("Sorry, we only have rooms 100 - 109. Please select a room that exists.");
85-
}
86-
else if (hotelRooms.get(roomNumber) == null)
87-
{
88-
System.out.println("Sorry, this room is empty.");
89-
}
90-
else if (!isRightPet)
91-
{
92-
System.out.println("This is not the pet you're looking for.");
93-
}
94-
else if (hotelRooms.get(roomNumber) != null)
95-
{
96-
checkOut(petName, roomNumber);
97-
}
98-
}
71+
checkOut(petName, roomNumber);
9972
}
10073
else if (command.equalsIgnoreCase("Move"))
10174
{
102-
String petName = words[1];
75+
petName = words[1];
10376
fromRoomNumber = Integer.parseInt(words[2]);
10477
toRoomNumber = Integer.parseInt(words[3]);
10578

106-
if (hotelRooms.get(fromRoomNumber) == null)
107-
{
108-
System.out.println("Your pet is not in room number " + fromRoomNumber + ".");
109-
}
110-
else
111-
{
112-
boolean toRoomExists = (toRoomNumber >= 100 && toRoomNumber <= 109);
113-
boolean fromRoomExists = (fromRoomNumber >= 100 && fromRoomNumber <=109);
114-
boolean isRightPet = hotelRooms.get(fromRoomNumber).equalsIgnoreCase(petName);
115-
116-
if (!fromRoomExists)
117-
{
118-
System.out.println("Sorry, we only have rooms 100 - 109. " + petName + " is currently in a room that exists. Please try again." );
119-
}
120-
else if (!toRoomExists)
121-
{
122-
System.out.println("Sorry, we only have rooms 100 - 109. We cannot move " + petName + " to a room that does not exist.");
123-
}
124-
else if (hotelRooms.get(toRoomNumber) != null)
125-
{
126-
System.out.println("Sorry, room number " + toRoomNumber + " already has an occupant. Please select a different one.");
127-
}
128-
else if (!isRightPet)
129-
{
130-
System.out.println("This is not the pet you're looking for.");
131-
}
132-
else
133-
{
134-
move(petName,fromRoomNumber,toRoomNumber);
135-
}
136-
}
79+
move(petName, fromRoomNumber, toRoomNumber);
80+
}
81+
else if (command.equalsIgnoreCase("MoveOver"))
82+
{
83+
moveOver();
13784
}
13885
else if (command.equalsIgnoreCase("Occupancy"))
13986
{
@@ -142,12 +89,17 @@ else if (command.equalsIgnoreCase("Occupancy"))
14289
else if (command.equalsIgnoreCase("CloseForSeason"))
14390
{
14491
closeForSeason();
92+
}
93+
else if (command.equalsIgnoreCase("Swap"))
94+
{
95+
int firstRoomNumber = Integer.parseInt(words[1]);
96+
int secondRoomNumber = Integer.parseInt(words[2]);
14597

98+
swap(firstRoomNumber, secondRoomNumber);
14699
}
147100
else if (command.equalsIgnoreCase("Exit"))
148101
{
149102
System.out.println("You have ended the program!");
150-
151103
}
152104
else
153105
{
@@ -157,40 +109,179 @@ else if (command.equalsIgnoreCase("Exit"))
157109

158110
}
159111

160-
private void checkIn(String petName, int roomNumber)
112+
private boolean roomNotReal(int roomNumber)
113+
{
114+
return !(roomNumber >= 100 && roomNumber <= 109);
115+
}
116+
117+
private boolean roomTaken(int roomNumber)
161118
{
162-
hotelRooms.put(roomNumber, petName);
163-
System.out.println("" + petName + " checked into room " + roomNumber + ".");
119+
return !(hotelRooms.get(roomNumber) == null);
120+
}
121+
122+
private boolean wrongPet(String petName, int roomNumber)
123+
{
124+
return !(hotelRooms.get(roomNumber).equalsIgnoreCase(petName));
125+
}
164126

165-
System.out.println(hotelRooms);
127+
private void checkIn(String petName, int roomNumber)
128+
{
129+
if (roomNotReal(roomNumber))
130+
{
131+
System.out.println("Sorry, we only have rooms 100 - 109. Please select a room that exists.");
132+
}
133+
else if (roomTaken(roomNumber))
134+
{
135+
System.out.println("Sorry, this room already has an occupant. Please select a different one.");
136+
}
137+
else
138+
{
139+
hotelRooms.put(roomNumber, petName);
140+
System.out.println("" + petName + " checked into room " + roomNumber + ".");
141+
}
166142
}
167143

168144
private void checkOut(String petName, int roomNumber)
169145
{
170-
hotelRooms.remove(roomNumber, petName);
171-
System.out.println("" + petName + " has been checked out of room number " + roomNumber + ".");
146+
if (roomNotReal(roomNumber))
147+
{
148+
System.out.println("Sorry, we only have rooms 100 - 109. Please select a room that exists.");
149+
}
150+
else if (!roomTaken(roomNumber))
151+
{
152+
System.out.println("Your pet is not in room number " + roomNumber + ".");
153+
}
154+
else
155+
{
156+
if (wrongPet(petName, roomNumber))
157+
{
158+
System.out.println("This is not the pet you're looking for.");
159+
}
160+
else if (roomTaken(roomNumber))
161+
{
162+
hotelRooms.remove(roomNumber, petName);
163+
System.out.println("" + petName + " has been checked out of room number " + roomNumber + ".");
164+
}
165+
}
166+
}
167+
168+
private void move(String petName, int fromRoomNumber, int toRoomNumber)
169+
{
170+
if (roomNotReal(fromRoomNumber))
171+
{
172+
System.out.println("Sorry, we only have rooms 100 - 109. " + petName + " is currently in a room that exists. Please try again.");
173+
}
174+
else if (roomNotReal(toRoomNumber))
175+
{
176+
System.out.println("Sorry, we only have rooms 100 - 109. We cannot move " + petName + " to a room that does not exist.");
177+
}
178+
else if (!roomTaken(fromRoomNumber))
179+
{
180+
System.out.println("Your pet is not in room number " + fromRoomNumber + ".");
181+
}
182+
else
183+
{
184+
if (roomTaken(toRoomNumber))
185+
{
186+
System.out.println("Sorry, room number " + toRoomNumber + " already has an occupant. Please select a different one.");
187+
}
188+
else if (wrongPet(petName, fromRoomNumber))
189+
{
190+
System.out.println("This is not the pet you're looking for.");
191+
}
192+
else
193+
{
194+
hotelRooms.remove(fromRoomNumber);
195+
hotelRooms.put(toRoomNumber, petName);
196+
System.out.println("" + petName + " has been moved from room number " + fromRoomNumber + " to room number " + toRoomNumber + ".");
197+
}
198+
}
199+
}
200+
201+
private void swap(int firstRoomNumber, int secondRoomNumber)
202+
{
203+
if (roomNotReal(firstRoomNumber))
204+
{
205+
System.out.println("Sorry, we only have rooms 100 - 109. The pet you are looking for is currently in a room that exists. Please try again.");
206+
}
207+
else if (roomNotReal(secondRoomNumber))
208+
{
209+
System.out.println("Sorry, we only have rooms 100 - 109. We cannot move the pet you are looking for to a room that does not exist.");
210+
}
211+
else if (!roomTaken(firstRoomNumber))
212+
{
213+
System.out.println("The pet you are looking for is not in room number " + firstRoomNumber + ".");
214+
}
215+
else
216+
{
217+
if (!roomTaken(secondRoomNumber))
218+
{
219+
System.out.println("Sorry, there aren't any pets in this room to swap with!");
220+
}
221+
else
222+
{
223+
String petInFirstRoom = hotelRooms.get(firstRoomNumber);
224+
String petInSecondRoom = hotelRooms.get(secondRoomNumber);
172225

173-
System.out.println(hotelRooms);
226+
hotelRooms.put(secondRoomNumber, petInFirstRoom);
227+
hotelRooms.put(firstRoomNumber, petInSecondRoom);
228+
System.out.println("" + petInFirstRoom + " has been moved to room number " + secondRoomNumber +
229+
", and " + petInSecondRoom + " has been moved to room number " + firstRoomNumber + ".");
230+
}
231+
}
174232
}
175233

176-
private void move(String petname, int fromRoomNumber, int toRoomNumber)
234+
private void moveOver()
177235
{
178-
hotelRooms.remove(fromRoomNumber);
179-
hotelRooms.put(toRoomNumber, petname);
180-
System.out.println("" + petname + " has been moved from room number " + fromRoomNumber + " to room number " + toRoomNumber + ".");
236+
String firstPet = null;
237+
238+
if (hotelRooms.get(109) != null)
239+
{
240+
firstPet = hotelRooms.get(109);
241+
hotelRooms.remove(109);
242+
}
243+
244+
for (int i = 108; i >= 100; i--)
245+
{
246+
String currentPet = null;
247+
248+
if (hotelRooms.get(i) != null)
249+
{
250+
currentPet = hotelRooms.get(i);
251+
}
181252

182-
System.out.println(hotelRooms);
253+
if (currentPet != null)
254+
{
255+
hotelRooms.put(i + 1, currentPet);
256+
hotelRooms.remove(i);
257+
}
258+
}
259+
260+
if (firstPet != null)
261+
{
262+
hotelRooms.put(100, firstPet);
263+
}
183264
}
184265

185266
private void getOccupancy()
186267
{
187-
hotelRooms.forEach((roomNumber,petName) -> System.out.println("" + petName + " is in room number " + roomNumber + "."));
268+
Set<Map.Entry<Integer, String>> entries = hotelRooms.entrySet();
269+
270+
for (Map.Entry<Integer, String> entry : entries)
271+
{
272+
int roomNumber = entry.getKey();
273+
String petName = entry.getValue();
274+
275+
System.out.println("" + petName + " is in room number " + roomNumber + ".");
276+
}
277+
278+
//Lambda version:
279+
// hotelRooms.forEach((roomNumber,petName) -> System.out.println("" + petName + " is in room number " + roomNumber + "."));
188280
}
189281

190282
private void closeForSeason()
191283
{
192284
hotelRooms.clear();
193285
System.out.println("We are closed for the rest of the season. Thank you for your patronage!");
194286
}
195-
196287
}

0 commit comments

Comments
 (0)