对象和属性值

时间:2014-02-24 17:12:23

标签: java

我的作业需要帮助。请注意,我自己已经完成了下面的代码,但我不确定我是否正确地完成了这项工作,特别是我的家庭作业的最后一句话。

我的家庭作业:

  

使用以下属性定义名为Building的类。每栋建筑都有一个平方英尺(区域)和故事。构造函数使用这两个属性创建一个Building。方法get_squarefootage(),get_stories(),set_square_footage()和set_stories()将用于获取和设置相应的属性值。方法get_info()将返回Building的所有当前属性值。 编写一个程序,让用户创建构建对象并更改其属性值。

package building_hw2;

import java.util.Scanner;

public class Building {

    int area;
    int stories;

    int get_squarefootage() { //get values of the area
        return area;
    }

    int get_stories() { //get values of the stories
        return stories;
    }

    void set_square_footage(int area) { //set values of the area
        this.area = area;
    }

    void set_stories(int stories) { //set values of the stories
        this.stories = stories;
    }

    void get_info() { //return all the current attribute balues of the building
        System.out.println("The square footage of the building is " + area);
        System.out.println("The building has " + stories + " stories");
    }

    //main method
public static void main(String[] args) {

    Building Bldg = new Building(); //create a building object

    Bldg.area = 40000;
    Bldg.stories = 5;

    Bldg.get_info(); //display the current values of the building

    //get user input to create building object
    Scanner keybd = new Scanner(System.in);
    System.out.println("Please enter the square footage(area) of the building : ");
    int bldgArea = keybd.nextInt();

    System.out.println("Please enter the stories : ");
    int bldgStories = keybd.nextInt();

    Bldg.set_square_footage(bldgArea);
    Bldg.set_stories(bldgStories);

    Bldg.get_squarefootage();
    Bldg.get_stories();

    Bldg.get_info();
}

}

3 个答案:

答案 0 :(得分:3)

你似乎正确地做到了。但是我想指出一些事情。首先,您应该将成员变量声明为私有,以便更好地封装您的类。您已经有了用于更改属性值的setter方法。

int area;
int stories;

在您的主体中,您可以按如下方式设置建筑物值:

 Bldg.set_square_footage_area(40000);
 Bldg.set_stories(5);

对get_info的要求不是很清楚你应该问究竟应该返回什么(属性的某些字符串表示或只是打印所有属性的当前值)

答案 1 :(得分:2)

你很困惑“返回”和“打印到控制台”。 get_info()方法应该返回一些东西。它不应该打印任何东西。

字段应该是私有的。在这种情况下,方法应该是公共的,因为您希望任何其他类能够调用它们。你忘了提供一个构造函数,虽然你的老师要求你提供一个。

请告知您的老师,Java中存在命名约定,并且教授其他约定根本不是一个好主意。许多框架和API都遵循标准约定。 get_squarefootage()应命名为getSquareFootage()。对于二传手也一样。为变量使用以小写字母开头的真实单词:building,而不是Bldg

答案 2 :(得分:1)

get_info应返回String或重命名为printBuildingAttributes

你有Bldg.area,但为什么没有这个字段的setter方法?那将与你的getter / setter范例相吻合。看起来你已经拥有它,所以使用它。使字段本身是私有的,只能通过getter / setter方法访问。

如果要检索建筑物的故事数或区域数,则需要将其存储在变量中。现在,你正在检索它并扔掉它。

此外,get_infoget_area不是方法命名的正确Java约定。