这是我的主要代码。我正在设计一个房间预订系统,所以我使用HashMap获取我的房间清单。
import java.util.*;
public class MiniProject {
private static Scanner inp = null;
public static void main(String[] args) {
Reservation person = null;
inp = new Scanner( System.in ); //input
System.out.println( "Welcome to the Room Reservation System" );
System.out.print( "Username: " );
String name = inp.nextLine();
String admin = "admin";
if(name.equals(admin))
{
Admin a = new Admin(name);
System.out.print("Enter password: ");
String password=inp.nextLine();
a.checkPassword(password);
}
else
{
person = new Reservation(name);
System.out.println();
}
HashMap<String, Integer> room = new HashMap<>();
room.put("Lecture Room 1", 1);
room.put("Lecture Room 2", 2);
room.put("Lecture Room 3", 3);
room.put("Lecture Room 4", 4);
room.put("Lecture Room 5", 5);
room.put("Lecture Room 6", 6);
room.put("Lecture Room 7", 7);
room.put("Lecture Room 8", 8);
room.put("Lecture Room 9", 9);
room.put("Lecture Room 10", 10);
room.put("Lecture Hall 1", 11);
room.put("Lecture Hall 2", 12);
room.put("Lecture Hall 3", 13);
room.put("Lecture Hall 4", 14);
room.put("Lecture Hall 5", 15);
room.put("Lecture Hall 6", 16);
room.put("Lecture Hall 7", 17);
room.put("Lecture Hall 8", 18);
room.put("Lecture Hall 9", 19);
room.put("Lecture Hall 10", 20);
room.put("Computer Training Lab 1", 21);
room.put("Computer Training Lab 2", 22);
room.put("Computer Training Lab 3", 23);
我是否正确创建了可用空间?
我想在另一个班级使用RoomChecker的房间,所以我可以检查房间的可用性。所有房间最初都是空的。整数值是一个id。因此,如果系统预订号码,房间将无法使用。但是如何阅读RoomChecker课程中的房间清单?
答案 0 :(得分:1)
确保您了解局部变量和实例变量(或字段)之间的差异以及Java中的对象和数据封装。网上有很多很好的例子。最好不要在main方法中编写所有内容,而是在几个方法中编写它们所做的事情(例如fillRoomsWithData())。
针对您的具体问题:在您的类MiniProject中声明Map房间(请注意名称中的复数)。创建RoomChecker实例后,您可以将房间传递给它(首先阅读Setter)。从那里,您可以访问之前传入的值。
答案 1 :(得分:0)
如果您想在另一个班级中使用HashMap
,请将其提供给班级。一个示例是使用RoomChecker
初始化HashMap
类,以便它可以使用其中的所有变量。
public class RoomChecker {
HashMap<String,Integer> rooms;
public RoomChecker(HashMap<String,Integer> rooms)
{
this.rooms = rooms;
}
//... Other methods to perform stuff on the rooms
public boolean hasRoom(String roomName)
{
return rooms.containsKey(roomName);
}
public boolean hasRoom(Integer roomNumber)
{
return rooms.containsValue(roomNumber);
}
//... etc
}
我认为,您希望完成的最佳方法是创建一个单独的班级Room
,其中包含多个字段,例如boolean occupied
,int roomNumber
,String roomName
等等,并制作ArrayList
个房间而不是HashMap
答案 2 :(得分:0)
我认为,你应该从更容易开始。但是,如果您需要创建预订系统,则应使用字段
创建课程Room
int id;
string name;
bool reserved
,
getter和setter以及方法
bool isReserved();
在SystemReservation
课程中,您应该创建arraylist
,其中包含班级Room
的对象。