如何实现ArrayList以将“Room”对象添加到“House”对象列表中?

时间:2013-03-12 17:47:55

标签: java generics arraylist

我目前正在执行任务,我有两个班级房间和房子。作为作业的一部分,我需要启用一个house class来将房间存储在ArrayList

  

实现一个方法从键盘读取House类中的房间信息 - 这应该根据需要调用Room构造函数。创建一个零参数的House构造函数来调用这个新方法。

我很抱歉,如果这个含糊不清或已在其他地方得到解答,但我试图理解其他类似查询的解释,我不知道如何将它们应用到我的情况中。

如何将ArrayList的{​​{1}}应用于上课?

Room

House

import java.util.ArrayList; import java.util.Scanner; public class House { private int idNum; private static int internalCount = 0; private ArrayList rooms = new ArrayList(); private String address; private int numRooms; private String houseType; public House (String address, int numRooms, String houseType) { idNum = internalCount++; this.address = address; this.numRooms = numRooms; this.houseType = houseType; } public House () { int i = 0; idNum = ++internalCount; Scanner scan = new Scanner(System.in); scan.useDelimiter("\n"); System.out.println("Enter address of house:"); address = scan.next(); System.out.println("Enter number of rooms:"); //Number of rooms in the House numRooms = scan.nextInt(); while (i < numRooms) //This will loop until all rooms have been described { add.room = new Room[100]; //I understand this is incorrect but I don't know what I should have in here i++; } System.out.println("Enter type of house:"); houseType = scan.next(); } public void addroom(String description, double length, double width) { } int getIdNum() { return idNum; } @Override public String toString() { String report = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; report += "Address: " + address + "\n"; report += "No. of Rooms: " + numRooms + "\n"; report += "House Type: " + houseType+ "\n"; report += "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; return report; } }

Room

6 个答案:

答案 0 :(得分:1)

您是否检查了API的ArrayList?

您需要以下内容:

rooms.add(new Room());

此外,我将使用Java泛型并定义列表:

private ArrayList<Room> rooms;

这使用generics,并确保这只能是房间列表,而不是杂项对象。它会为您节省一些悲伤,因为您不会无意中将房屋添加到您的房间列表中(通过编程错误)

答案 1 :(得分:0)

将列表专门化为Room类型

List<Room> rooms = new ArrayList<Room>();

while (i < numRooms)  //This will loop until all rooms have been described
{
  rooms.add(new Room()); //this is correct 
  i++;
}

答案 2 :(得分:0)

由于这是作业,我不会完全解决它,但为你提供工作的基础......

public class House {
  private List<Room> rooms;

  public House() {
    rooms = new ArrayList<Room>();
  }

  public void addRoom(...) {
    Room room = new Room(...);
    rooms.add(room);
  }

  public int numRooms() {
    return rooms.size();
  }

  public Room getRoom(int roomNumber) {
    return rooms.get(roomNumber);
  }
}

public class Room {
  public Room(...) {
    ...
  }
}

有问题吗?

答案 3 :(得分:0)

ArrayList<Room> rooms = new ArrayList<Room>();
rooms.add(new Room());

答案 4 :(得分:0)

更改构造函数方法,添加一些关于房间ArrayList的代码。

public House(..., ArrayList aRooms) {

 ...
 rooms = aRooms;
}

public House() {

 ...
 // It's better to instantiate the rooms array here.
 rooms = new ArrayList<Room>();
}

要为您的房间ArrayList添加房间,只需执行相应的操作(不要忘记查看ArrayList API,http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html)。

ArrayList<Room> rooms = new ArrayList<Room>();
rooms.add(new Room(...));
// Add here all the rooms you need.

House house = new House(rooms);

// You can also create a method into the House class to allow adding new rooms once you have created a House object.
public void addRoom(Room room) {

 this.rooms.add(room);
}

答案 5 :(得分:0)

更改此循环:

while (i < numRooms)  //This will loop until all rooms have been described
{
  add.room = new Room[100]; //I understand this is incorrect but I don't know what I  should have in here
 i++;
}

要:

while (i < numRooms) 
{
Room newRoom = new Room();
rooms.add(newRoom);
i++;
}