我对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()方法中。基本上,应该将所有计算出的面积累加起来,但是,它所做的只是回显该面积,我不知道为什么。任何建议表示赞赏!

最佳答案

您正在混合设置器和获取器。例如,您的setArea()方法不是真正的“ setter”方法,因为它是私有的,不接受任何参数,不设置任何内容,并尝试返回值-与setter应该执行的大多数操作完全相反,并且相同适用于您的setTotalArea。

无论如何,不​​好意思说,但是这段代码很枯燥,我建议您简单地摆脱它,然后重新开始(这还不算什么大类,所以没什么大不了的),而是从您的领域开始(高度,基和名称),构造函数,可能是设置类属性的构造函数,并且具有真正的公共设置方法,这些方法实际上接受参数并使用这些参数来设置类字段。然后,创建返回类字段值的getter方法。您的类甚至不应该具有setArea方法或area字段,因为area是一个计算值,而不是设置值,它可能应该在getArea()方法中当场计算并返回。

编辑,您声明:


  我的问题是在setTotalArea()方法中。基本上,应该将所有计算出的面积累加起来,但是,它所做的只是回显该面积,我不知道为什么。任何建议表示赞赏!


抱歉,我不明白。总共什么区域?该课程仅描述一个三角形,因此这里没有累积面积的概念。现在,如果您拥有另一个包含Triangle对象的数组或集合的类,那么* get * TotalArea(未设置总面积)方法将很有意义,因为它将添加集合中所有三角形的面积,但是您没有在这里有这个。

10-04 23:40