1

私は現在、部屋と家の2つのクラスがある割り当てとしてやっています。割り当ての一部として、家のクラスが部屋を次の場所に格納できるようにする必要がありますArrayList

Houseキーボードからクラスの部屋情報を読み込むメソッドを実装します。これにより、必要に応じてRoomコンストラクターが呼び出されます。この新しいメソッドを呼び出すために、引数がゼロのHouseコンストラクターを作成します。

これが曖昧であるか、他の場所で回答されている場合はお詫びしますが、他の同様のクエリの説明を理解しようとしたため、自分の状況にそれらを適用する方法がわかりません。

家のクラスArrayListにaを適用するにはどうすればよいですか?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

import java.util.Scanner;

public class Room {

private String description;
private double length;
private double width;

public Room (String description, double length, double width) {
this.description = description;
this.length = length;
this.width = width;     
}

public Room () {
Scanner scan = new Scanner(System.in);
scan.useDelimiter("\n");

System.out.println("Enter description of room:");
description = scan.next();

System.out.println("Enter length of room:");
length = scan.nextDouble();

 System.out.println("Enter width of room:");
 width = scan.nextDouble();
 }

 /*
 * Calculates and returns area of Room
 */
 public double getArea () {
 return length*width;
 }


 @Override
 public String toString() {
 return description + "- Length: " + length + "m; Width: " + width + 'm';
 }   
}
4

6 に答える 6

1

ArrayListのAPIを確認しましたか?

次のようなものが必要です。

rooms.add(new Room());

さらに、Java ジェネリックを利用して、次のようにリストを定義します。

private ArrayList<Room> rooms;

これはジェネリックを利用し、これが部屋のリストのみであり、その他のオブジェクトではないことを保証します。部屋のリストに誤って家を追加することができないという点で(プログラミングエラーによって)、いくらかの悲しみを救うでしょう。

于 2013-03-12T17:49:35.787 に答える
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(...) {
    ...
  }
}

質問?

于 2013-03-12T17:52:08.747 に答える
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++;
}
于 2013-03-12T17:50:58.843 に答える
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++;
}
于 2013-03-12T18:07:51.160 に答える
0
ArrayList<Room> rooms = new ArrayList<Room>();
rooms.add(new Room());
于 2013-03-12T17:58:57.117 に答える
0

ルームに関するコードを追加して、コンストラクターのメソッドを変更しますArrayList

public House(..., ArrayList aRooms) {

 ...
 rooms = aRooms;
}

public House() {

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

部屋に部屋を追加するには、次のようにします ( APIArrayListを確認することを忘れないでください、 http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html )。ArrayList

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);
}
于 2013-03-12T18:01:49.030 に答える