来自驱动程序类的Java Change属性

时间:2016-10-29 23:11:02

标签: java arraylist

我不确定我的教授是否输错了指令,或者我错过了什么。我获得了一项任务,我们正在研究arraylist。指令的一部分要求我们在类中写入一个方法来更改属性名称city,一个名为setCity()的方法。之后,我将创建一个驱动程序类,要求用户搜索我想要更改城市的人。我的教授回答说,但这基本上是指令的重复。在周末期间,周一之前不会有回复。

我从驱动程序方面了解如何编写此方法。但我的问题是如何编写setCity()方法来改变主类中的城市属性?

指令的引用:"您的CityEntry类应该有一个setCity()方法,允许更改city属性"

示例:

namespace std {
template <class charT, class traits = char_traits<charT> >
class basic_ostream {
public:
    basic_ostream<charT,traits>& operator<<(
      basic_ostream<charT,traits>& (*pf)(basic_ostream<charT,traits>&));
    // ...
};

}

CityEntry类中的setCity()方法示例是这样的吗?

public static void editCity(ArrayList<CityEntry> address){
    boolean found = false;
    Scanner scan = new Scanner(System.in);
    System.out.println("example: ");
    String str = scan.nextLine();

    for(int i = 0; i < address.size(); i++){
        if(address.get(i).getName().equalsIgnoreCase(str)){
            found = true;
        }
    }

    if(found){
        System.out.println("Enter new city: ");
        //here's the problem. If I should create a method in the driver for setCity()
        //can't think of how to create it in the CityEntry class
    }
}

编辑:谢谢大家。我忘记了变异器的基础知识。我们还没有将它用于我们的大多数作业。所以没有人知道教授的意思。

3 个答案:

答案 0 :(得分:2)

你很近,但在这种情况下你不需要返回任何东西。你需要做的就是改变城市。

在Java中,当我们不想返回任何内容时,我们使用“void”作为类型(隐含返回void部分并将其遗漏)。

所以而不是

public String setCity(String city){

你将使用

public void setCity(String city){

并且不要退货。

答案 1 :(得分:1)

我假设您要在具有此CityEntry属性的city类中编写此函数。这个属性最有可能是protectedprivate这就是你需要setter(mutator)的原因,但你的setter方法不应该返回它只是改变的东西城市属性的价值。要返回city属性的值,您还可以使用getter(访问者)方法,如下所示:

public class CityEntry {
    //Private fields
    private String city;
    ...

    //Constructor method
    public CityEntry(String city, ...) {
        this.city = city;
        ....
    }

    //Accessor for city
    public String getCity() {
        return city;
    }

    //Mutator for city
    public void setCity(String city) {
        this.city = city;
    }
}

有关详细信息,请查看:http://java.about.com/od/workingwithobjects/a/accessormutator.htm

答案 2 :(得分:1)

就像其他回复一样,setCity()是一个setter方法。它没有任何回报。它传递了名称,并将其分配给this.city实例变量。所以基本上你需要将public String setCity()更改为public void setCity(String city)