嗨,我为我的班级做了这个任务:
实现一个名为Box的类,该类具有以下属性和方法: int长度,宽度,高度 字符串颜色
构造函数方法:
我有所有吸气剂和定型器的长度和颜色。我唯一的问题是,对于音量,如果我将值设置为不同,它将无法正确计算。
它只接受初始值。有什么想法吗?我的代码在课堂下面。例如,我可以.setLength(7)而不是打印总共7 * 8 * 6,它打印出的总数为10 * 8 * 6.
public class Box
{
private int height = 6;
public void se(int height){
this.height=height;
}
public int getHeight(){
return height;
}
private int width = 8;
public void setWidth(int width){
this.width=width;
}
public int getWidth(){
return width;
}
private int length= 10;
public void setLength(int length){
this.length=length;
}
public int getLength(){
return length;
}
private String color="Black";
public void setColor(String color){
this.color=color;
}
public String getColor(){
return color;
}
private int vol=length*width*height;
public void setVol(int vol){
this.vol=vol;
}
public int getVol(){
return vol;
}
}
答案 0 :(得分:2)
摆脱vol
属性和setVol
setter;这不是课程规范的一部分,也是你问题的根本原因。重写getVol
以在每次调用时根据长度,宽度和高度计算音量。
您当前的设计不起作用,因为只要vol
,length
或width
发生更改,就不会重新计算height
。您可以保留当前的字段集并重写维度设置器,以便在每次调用时重新计算vol
属性。这将加速getVol
getter方法,代价是类设计的复杂性更高,并且设置器方法更慢。如你所知,这是你可以做或不做的权衡。但是,您需要摆脱setVol
方法,因为在设置音量时,无法知道如何设置尺寸以使值保持一致。
答案 1 :(得分:0)
您需要为getter
vol
函数
e.g。
public int getVol () {
vol=length*width*height;
return vol;
}
当然,中间vol
的设置不是必需的。
你可以
return length*width*height;
这可确保始终正确计算当前vol
。