2014-09-29 114 views
1

所以我是一個新手學習'回合類和麪向對象在java中。移動設備的每個實例都會保存模型,所有者名稱和編號。所以在主文件中,我嘗試使用這些參數和一個標識符來創建一個新實例的方法。但是,編譯表示mobName已經在createMobile中定義。它應該是一個可以指向使用「mob1」的實例。任何幫助?如何使用在Java中創建實例的參數創建方法?

class PhoneSystem{ 

    public static void main(String[] args){ 

      createMobile("mob1", "Android S4", "John Doe", 13374042); 
     } 

     public static void createMobile(String mobName, String brand, String owner, int number){ 
      Mobile mobName = new Mobile(); 
      mobName.SetBrand(brand); 
      mobName.SetOwner(owner); 
      mobName.SetNumber(number); 
     } 
} 

回答

4
public static void createMobile(String mobName, String brand, String owner, int number){ 
     Mobile mobName = new Mobile(); 
    ... 

這兩行是你的問題所在。你已經定義了一個String mobName。之後,您嘗試定義一個與Mobile mobName同名的變量。即使在方法聲明和方法中,變量也不能共享相同的名稱。有一個獨特的案例,這是可能的,但涉及領域和實例,超出了這個問題的範圍。

既然你想mob1你應該做的:

 Mobile mob1 = new Mobile(); 

此外,您還沒有指定,如果你想mob1是它的名稱或變量名。如果你想讓設備被稱爲mob1,你應該做到這一點,所以Mobile將設備名稱作爲字符串。還有另一種方法可以通過MapMobile實例與名稱關聯起來,但由於您在說您正在學習面向對象,這可能也不在範圍之內,因爲它涉及Collection

但是,您提供的當前代碼會導致mob1在方法結束時超出範圍。也許你想return它到主類?

public static Mobile createMobile(String mobName, String brand, String owner, int number){ 
     Mobile mob1 = new Mobile(); 
    ... 
     return mob1; 
    } 

這將允許您創建mob1並將其傳遞給您的主要方法。

0
public static void createMobile(String mobileName, String brand, String owner, int number){ 
      Mobile mobName = new Mobile(); 
      mobName.SetBrand(brand); 
      mobName.SetOwner(owner); 
      mobName.SetNumber(number); 
     } 

這裏createMobile方法第一個參數的名稱和移動對象名稱相同的是,爲什麼你長了錯誤