我不确定我的教授是否输错了指令,或者我错过了什么。我获得了一项任务,我们正在研究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
}
}
编辑:谢谢大家。我忘记了变异器的基础知识。我们还没有将它用于我们的大多数作业。所以没有人知道教授的意思。
答案 0 :(得分:2)
你很近,但在这种情况下你不需要返回任何东西。你需要做的就是改变城市。
在Java中,当我们不想返回任何内容时,我们使用“void”作为类型(隐含返回void部分并将其遗漏)。
所以而不是
public String setCity(String city){
你将使用
public void setCity(String city){
并且不要退货。
答案 1 :(得分:1)
我假设您要在具有此CityEntry
属性的city
类中编写此函数。这个属性最有可能是protected
或private
这就是你需要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)
。