2016-10-29 58 views
-1

我不確定教授是否錯誤輸入了指令,或者我錯過了某些內容。我被賦予一項任務,我們正在研究數組列表。指令的一部分要求我們在該類中寫入一個方法來更改屬性名稱city,這是一種名爲setCity()的方法。之後,我將創建一個駕駛員課程,要求用戶搜索我想要更改城市的人員。我的教授回答說,但這基本上是指導的重複。在週末期間,星期一之前將不會有回覆。Java驅動類更改屬性

我從驅動程序方面瞭解如何編寫此方法。但我的問題是如何編寫setCity()方法來更改主類中的城市屬性?

引用的指令的:「您的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 
    } 
} 

請問setCity的一個例子() CityEntry類中的方法看起來像這樣?

public String setCity(city){ 
    this.city = city; 
    return city; 
} 

編輯:謝謝大家。我忘記了增變器的基礎知識。我們沒有使用它來完成我們大部分的任務。所以善良的人不知道教授的意思。

回答

2

你很近,但在這種情況下,你不需要返回任何東西。你所需要做的就是改變城市。在Java中,當我們不想返回任何東西時,我們使用「void」作爲類型(返回void部分被隱含並被忽略)。

所以不是

public String setCity(String city){ 

您將使用

public void setCity(String city){ 

,不返回任何東西。

+0

什麼樣的setter函數沒有任何參數?! –

+0

那種不是非常有幫助的那種。 –

2

我認爲你要在具有city屬性的CityEntry類中寫這個函數。這個屬性很可能是protectedprivate這就是爲什麼你需要一個setter(增變器),但你的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

1

就像對方回覆, setCity()是一個setter方法。它不會返回任何東西。它通過名稱並將其分配給this.city實例變量。所以基本上你需要將public String setCity()更改爲public void setCity(String city)