在类文件中添加总计

时间:2012-03-13 04:49:54

标签: java oop

我对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()方法中。基本上,它应该计算所有计算区域的累计总数,但是,它所做的只是回应该区域,我无法弄清楚原因。任何建议都表示赞赏!

2 个答案:

答案 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方法副本。