2013-07-09 40 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設計的... –