2013-07-09 54 views
-8

我有一个房间的房间。我以递归方式呼叫这间房子来获得房间,我希望所有房间的房屋名称只能印刷一次。例如房屋名称:市政厅 - 其后是每个房间的房间属性。在Java中设置交互

House house; 
Set<House> rooms = house.getRooms(); 

//Bear in mind that all rooms have the same house name (houseName) 
for(House room:rooms){ 
    System.out.println(room.getHouseName()); // will be the same for all rooms 
    System.out.println("Room: "); 
    System.out.println(room.getColor()); 
    System.out.println(room.getState()); 
    System.out.println();  
} 

我想在下面的窗体中为所有房间输出一次houseName。

Output: 
House Name: City Hall 
No of Rooms: 3 
--------------- 
Room: 
red 
old 

Room: 
blue 
damaged 

Room: 
white 
Renovated 
+4

可能是你想要的地图实施? – kosa

+2

为什么你的房间类型'House'?而“递归地”你的意思是“迭代”? – ruakh

+0

@ruak:递归意味着房子自称并包含houseName和一组房间-Set 房间 –

回答

0

你可以尝试以下

这里是我的房间级

public class Rooms { 
String color; 
String state; 

public String getColor() { 
    return color; 
} 

public void setColor(String color) { 
    this.color = color; 
} 

public String getState() { 
    return state; 
} 

public void setState(String state) { 
    this.state = state; 
} 
} 

现在,这里是我的家类

public class House { 
String houseName; 
int numberOfRooms; 
Set<Rooms> rooms=new HashSet<>(); 

public String getHouseName() { 
    return houseName; 
} 

public void setHouseName(String houseName) { 
    this.houseName = houseName; 
} 

public int getNumberOfRooms() { 
    return numberOfRooms; 
} 

public void setNumberOfRooms(int numberOfRooms) { 
    this.numberOfRooms = numberOfRooms; 
} 

public void setRooms(Set<Rooms> rooms) { 
    this.rooms = rooms; 
} 

public Set<Rooms> getRooms() { 
    return rooms; 
} 

public Set<House> getHouse(){ 
    Set<House> houses=new HashSet<>(); 
    Set<Rooms> rooms=new HashSet<>(); 
    House h1=new House(); 
    Rooms r1=new Rooms(); 
    Rooms r2=new Rooms(); 

    r1.setColor("red"); 
    r1.setState("new"); 
    r2.setColor("blue"); 
    r2.setState("old"); 
    rooms.add(r1); 
    rooms.add(r2); 
    h1.setHouseName("Haven"); 
    h1.setNumberOfRooms(2); 
    h1.setRooms(rooms); 

    houses.add(h1); 

    return houses; 
} 
} 

最后,这里是我的主类

public class MyClass { 
public static void main(String[] args) { 
    House house=new House(); 
    Set<House> houses=house.getHouse(); 
    for(House h:houses){ 
     System.out.println("House Name: "+h.getHouseName()); 
     System.out.println("Number of rooms: "+h.getNumberOfRooms()); 
     for(Rooms r:h.getRooms()){ 
      System.out.println("Room color: "+r.getColor()); 
      System.out.println("Room state: "+r.getState()); 
     } 
    } 

    } 
    } 
+0

为什么一间房子知道所有房屋?最好是有一个包含房屋的“村庄”类或为此使用静态成员。但让一栋房子知道所有房屋并不是好设计。 –

+0

@UwePlonus你可以使用这里的任何命名 –

+0

我的意思是方法'公开设置 getHouse()'这是不好的OO设计。而且问题基本上是关于OO设计的... –