如何对多个Java对象的属性值进行排序并求和?
我刚开始学习Java,我只做了一个作业,这可能是非常基本的。事情是这样的: 写两个类,叫做House和Room。房间应具有诸如房间类型(字符串)(如厨房、客厅、卧室等)、面积(双人)和楼层(整数)等属性。房子应该有房间,由房间类制成。它还应该有名为totalArea(floor:int)和totalArea(int)的方法。最后一句话取自作业的字面意思 我想,对于第一个房间,我必须将所有房间的面积值相加,并且具有相同的楼层值。对于第二个,我必须计算所有房间的总面积。第二个对我来说不是问题。然而,第一个是。我写的课程是这样的:如何对多个Java对象的属性值进行排序并求和?,java,class,attributes,Java,Class,Attributes,我刚开始学习Java,我只做了一个作业,这可能是非常基本的。事情是这样的: 写两个类,叫做House和Room。房间应具有诸如房间类型(字符串)(如厨房、客厅、卧室等)、面积(双人)和楼层(整数)等属性。房子应该有房间,由房间类制成。它还应该有名为totalArea(floor:int)和totalArea(int)的方法。最后一句话取自作业的字面意思 我想,对于第一个房间,我必须将所有房间的面积值相加,并且具有相同的楼层值。对于第二个,我必须计算所有房间的总面积。第二个对我来说不是问题。然而,
public class House {
//Attributes
public Room bedroom;
public Room kitchen;
public Room livingroom;
//Constructor
public House (){
bedroom = new Room();
...
};
//Methods
public double totalArea(){
return bedroom.area + livingroom.area + kitchen.area;
}
public Room getBedroom() {
return bedroom;
}
public void setBedroom(Room bedroom) {
this.bedroom = bedroom;
}
等等。
}
我的房间是这样的:
public class Room {
public String typeOfRoom;
public double area;
public int floor;
//Methods
public String getTypeOfRoom() {
return typeOfRoom;
}
public void setTypeOfRoom(String typeOfRoom) {
this.typeOfRoom = typeOfRoom;
}
public double getArea() {
return area;
}
public void setArea(double area) {
this.area = area;
}
public int getFloor() {
return floor;
}
public void setFloor(int floor) {
this.floor = floor;
}
}
我的主要课程是
public class Main {
public static void main(String[] args) {
// write your code here
House h1 = new House();
Room r1 = new Room();
Room r2 = new Room();
Room r3 = new Room();
r1.setTypeOfRoom("bedroom");
r1.setArea(10);
r1.setFloor(1);
r2.setTypeOfRoom("kitchen");
r2.setArea(12);
r2.setFloor(1);
r3.setTypeOfRoom("livingroom");
r3.setArea(15);
r3.setFloor(2);
h1.bedroom = r1;
h1.kitchen = r2;
h1.livingroom = r3;
System.out.printf(h1.totalArea() + "\n");
}
}
那么,如何根据楼层属性的值对Room类的所有实例的area属性的值求和呢?由于您不使用集合,并且值是硬编码的,我认为解决方案类似于:
Map<Int, Double> floorAreas = new HashMap<>();
// Implement this method for all types of rooms, since they are hardcoded
public void setBedroom(Room bedroom) {
double savedArea = 0;
int currFloor = bedroom.getFloor();
if (floorAreas.containsKey(currFloor))
savedArea += floorAreas.get(currFloor);
savedArea += bedroom.getArea();
this.bedroom = bedroom;
floorAreas.put(currFloor, savedArea);
}
public double getFloorArea(int floorNumber) {
return floorAreas.get(floorNumber);
}
Map floorAreas=newhashmap();
//对所有类型的房间实施此方法,因为它们都是硬编码的
公共休息室(房间-卧室){
双savedArea=0;
int currfool=卧室.getFloor();
if(地板集装箱箱(当前地板))
savedArea+=楼层面积get(currFloor);
savedArea+=卧室.getArea();
这个卧室=卧室;
地板铺设(currFloor,savedArea);
}
公共双GetFloorRarea(内部楼层编号){
返回楼面面积。获取(楼面编号);
}
您是否需要为房间(卧室
,厨房
等)使用硬编码变量,或者您是否也可以在房屋
类中使用房间集合(列出房间
)?可能是硬编码变量,但我不知道。它不在作业中。我更改了问题的标题,因为我不小心复制了粘贴的问题描述的第一行,而不是它。非常感谢。那么,包含集合和值的解决方案将更加优雅?@RadekJohn,欢迎您。是的,集合是处理相同类型值的最佳方式。使用列表存储所有房间将使计算楼层面积更加容易。