我对OOP很新,所以任何帮助都表示赞赏。我有一个类文件,它接受一些输入并计算三角形的区域,如:
public class Triangle
{
private int base;
private int height;
private double area;
private String name;
private double totalArea = 0;
public void writeOutput()
{
System.out.println("Triangle name: " + name);
System.out.println("Triangle base: " + base);
System.out.println("Triangle height: " + height);
System.out.println("Triangle area: " + setArea());
System.out.println("Total Area: " + totalArea);
}
private double setArea()
{
area = (base * height) * 0.5;
return area;
}
private double setTotalArea()
{
totalArea += area;
return totalArea;
}
}
我的问题出在setTotalArea()
方法中。基本上,它应该计算所有计算区域的累计总数,但是,它所做的只是回应该区域,我无法弄清楚原因。任何建议都表示赞赏!
答案 0 :(得分:1)
你混淆了二传手和吸气鬼。例如,你的setArea()
方法不是真正的“setter”方法,因为它是私有的,不接受任何参数,什么也不设置,并尝试返回一个值 - 与setter应该做的大多数事情完全相反,并且你的setTotalArea也一样。
无论如何,很遗憾地说,但是这段代码很糟糕,我建议你简单地摆脱它并重新开始(它还没有那么大的类,所以这没什么大不了的),但从你的领域开始(高度,基数和名称),构造函数,也许是设置类属性的实现者,以及真正接受参数并使用这些参数设置类字段的真实 public setter方法。然后创建返回类字段值的getter方法。你的类甚至不应该有setArea方法或区域字段,因为该区域是计算值,而不是设定值,它应该在getArea()方法中当场计算并返回。
编辑,你说:
我的问题出在setTotalArea()方法中。基本上,它应该计算所有计算区域的累计总数,但是,它所做的只是回应该区域,我无法弄清楚原因。任何建议都表示赞赏!
抱歉,但我不明白这一点。共有哪些方面?该类仅描述一个三角形,因此这里没有累积区域概念。现在,如果你有另一个包含三角形对象的数组或集合的类,那么 * get * TotalArea(不是 set 总区域)方法会有意义,因为它会添加集合中所有三角形的区域,但这里没有这个。
答案 1 :(得分:1)
我对你的执行不太清楚,但如果 - 三角形t1 =新三角形(); t1.setArea(); 三角形t2 =新三角形(); t2.setArea();
2以上是单独的对象,如果您使用上述类型的对象创建,那么您不能指望获得累积总数,因为两个对象都有自己的setArea方法副本。