我目前正在执行任务,我有两个班级房间和房子。作为作业的一部分,我需要启用一个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
答案 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++;
}