以下是一个测试类!
package 数组.作业3; import java.util.Scanner; public class Test { static Hotel h = new Hotel(); public static void main(String[] args) { System.out.println("《《《《《《《《《《《《欢迎光临大酒店》》》》》》》》》》》》"); while (true) { Scanner scanner = new Scanner(System.in); System.out.println("1.查看酒店的房间及状态;2.定房间;3.退房;4.退出系统"); System.out.print("请输入数字选择你需要的服务:"); while (true) { if (scanner.hasNextInt()) { int no = scanner.nextInt(); if (no >= 1 && no <= 4) { checkServices(no); System.out.println(); break; } else { System.out.println("输入错误,请重新输入!"); System.out.println("1.查看酒店的房间的示意图;2.定房间;3.退房;4.退出系统"); System.out.print("请输入数字选择你需要的服务:"); continue; } } else { System.out.println("输入格式有误:应输入数字为:1~5"); System.out.println("1.查看酒店的房间的示意图;2.定房间;3.退房;4.退出系统"); System.out.print("请输入数字选择你需要的服务:"); scanner.next(); } } } } public static void checkServices(int no) { switch (no) { case 1: //查看酒店的房间及状态 h.roomList(); break; case 2: //订房 h.reservation(true); break; case 3: //退房 h.reservation(false); break; case 4: //退出 System.out.println("期待您下次使用!"); System.exit(0); break; } } }
以下是房间类
public class Room { private String no; private String type;//标准间,双人间,豪华间 private boolean isUse; public String getNo() { return no; } public void setNo(String no) { this.no = no; } public String getType() { return type; } public void setType(String type) { this.type = type; } public boolean isUse() { return isUse; } public void setUse(boolean isUse) { this.isUse = isUse; } public Room() { super(); } Room(String no, String type,boolean isUse){ this.no= no; this.type = type; this.isUse = isUse; } public String toString() { return " 【房号】:"+ no + " 【类型】:"+type+" 【状态】:"+(isUse?" 已入住 ":" 空闲 "); } }
以下是酒店类
import java.util.Scanner; /* * 规定酒店:5层,每层10个房间 * 1.2层是标准件 * 3.4层是双人间 * 5 层是豪华间 */ public class Hotel { Room[][] rooms; //初始化房间 Hotel() { rooms = new Room[5][10]; for (int i = 0; i < rooms.length; i++) { for (int j = 0; j < rooms[i].length; j++) { if (i == 0 || i == 1) { rooms[i][j] = new Room((i + 1) * 1000 + (j + 1) + "", "标准间", false); } if (i == 2 || i == 3) { rooms[i][j] = new Room((i + 1) * 1000 + (j + 1) + " ", "双人间", false); } if (i == 4) { rooms[i][j] = new Room((i + 1) * 1000 + (j + 1) + " ", "豪华间", false); } } } } // 对外提供查看房间列表 public void roomList() { for (int i = 0; i < rooms.length; i++) { for (int j = 0; j < rooms[i].length; j++) { System.out.print(rooms[i][j]); } System.out.println(); } } // 提供对外预定及退房方法 public void reservation(boolean a) { Scanner scanner = new Scanner(System.in); outer: while (true) { System.out.print("请输入房间号:"); if (scanner.hasNextInt()) { String no = (scanner.next()); inner: for (int i = 0; i < rooms.length; i++) { for (int j = 0; j < rooms[i].length; j++) { if (rooms[i][j].getNo().equals(no)) { if (a) { if (rooms[i][j].isUse()) { System.out.println("手慢了,房间已经被预定啦!"); continue outer; } else { rooms[i][j].setUse(true); System.out.println("房间订好啦,祝您入住愉快!"); break outer; } } else { if (rooms[i][j].isUse()) { rooms[i][j].setUse(false); System.out.println("房间已经退了,欢迎下次光临!"); break outer; } else { System.out.println("房间没有人入住!"); continue outer; } } } } } System.out.print("没有这个房间,请查证后重新输入!"); } else { System.out.println("输入房间号格式错误!"); scanner.next(); } } } }
以上是代码!
问题是现在我只能输入1层和2层的房间号
如果想预定3层或以上的房间,就匹配不上了!
求大神指点一下!