如何将主程序中HashMap的数据读入另一个类

时间:2016-06-03 13:52:20

标签: java

这是我的主要代码。我正在设计一个房间预订系统,所以我使用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课程中的房间清单?

3 个答案:

答案 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 occupiedint roomNumberString roomName等等,并制作ArrayList个房间而不是HashMap

答案 2 :(得分:0)

我认为,你应该从更容易开始。但是,如果您需要创建预订系统,则应使用字段

创建课程Room

int id; string name; bool reserved

getter和setter以及方法 bool isReserved();

SystemReservation课程中,您应该创建arraylist,其中包含班级Room的对象。