Java:Getters,Setters和Constructor

时间:2014-03-15 04:00:37

标签: java class constructor setter getter

我正在尝试创建一个包含位置的类,包括以下方法:

每个数据字段的Setters(mutators) 对于位置名称,您应该使用trim()方法删除任何前导或尾随空格。

每个数据字段的getters(访问者)

构造函数:您应该只有一个构造函数来获取地名,纬度和经度。您可能希望数据有效,但可能需要修剪字符串。

public class Location {
    public Location(String aCity, double aLatitude, double aLongitude)
    {
        String city = aCity;
        double latitude = aLatitude;
        double longitude = aLongitude;
    }
    void setLocation(String theCity)
    {
        city = theCity.trim();
    }
    void setLatitude(double lat)
    {
        latitude = lat;
    }
    void setLongitude(double long1)
    {
        longitude = long1;
    }
    public String getLocation()
    {
        return city;
    }
    public double getLatitude()
    {
        return latitude;
    }
    public double getLongitude()
    {
    return longitude;
    }
}

我不知道我在哪里出错了,我在这两个城市,纬度和经度都出错了。这是我第一次上课,所以请为我愚蠢一切。谢谢你的时间。

2 个答案:

答案 0 :(得分:3)

你快到了。你有:

public Location(String aCity, double aLatitude, double aLongitude)
{
    String city = aCity;
    double latitude = aLatitude;
    double longitude = aLongitude;
}

您正在构造函数中声明局部变量。你实际上想要声明字段:

public class Location {

    private String city;
    private double latitude;
    private double longitude;

    public Location(String aCity, double aLatitude, double aLongitude)
    {
        city = aCity;
        latitude = aLatitude;
        longitude = aLongitude;
    }

    ...

}

查看declaring member variables上的官方教程。它简洁而精心编写,可以让您更好地了解正在发生的事情。

答案 1 :(得分:0)

以下是你做错了什么:

在代码中,您在构造函数中声明变量。这将使它们仅由构造函数可见。而不是这样:

public class Location {
    public Location(String aCity, double aLatitude, double aLongitude)
    {
        String city = aCity;
        double latitude = aLatitude;
        double longitude = aLongitude;
    }
    void setLocation(String theCity)
    {
        city = theCity.trim();
    }
    void setLatitude(double lat)
    {
        latitude = lat;
    }
    void setLongitude(double long1)
    {
        longitude = long1;
    }
    public String getLocation()
    {
        return city;
    }
    public double getLatitude()
    {
        return latitude;
    }
    public double getLongitude()
    {
    return longitude;
    }
}

您的代码应如下所示:

public class Location {

    String city = null;
    double latitude;
    double longitude;

    public Location(String aCity, double aLatitude, double aLongitude)
    {
        city = aCity;
        latitude = aLatitude;
        longitude = aLongitude;
    }
    void setLocation(String theCity)
    {
        city = theCity.trim();
    }
    void setLatitude(double lat)
    {
        latitude = lat;
    }
    void setLongitude(double long1)
    {
        longitude = long1;
    }
    public String getLocation()
    {
        return city;
    }
    public double getLatitude()
    {
        return latitude;
    }
    public double getLongitude()
    {
        return longitude;
    }
}