2014-06-06 122 views
0

我想檢查一個類類型對象的數組是否包含特定的字符串。Java - 檢查類對象數組是否包含某個字符串

這是構造函數我有一個產品對象:

public Product()  
{ 
    name = "No name yet"; 
    demandRate = 0;   
    setupCost = 0; 
    unitCost = 0;   
    inventoryCost = 0; 
    sellingPrice = 0;   
}  

這是數組的初始化:

Product[] product = new Product[3]; 

我發現類似的問題在這裏Checking if long is in array這裏Look if an array has an specified object。所以我試過這段代碼:

public boolean isAProduct(String nameOfProduct) 
    //Returns true if a name has been found otherwise returns false 
    { 
     boolean found = false; 
     int counter = 0; 

     while (!found && (counter < MAXNUMBEROFPRODUCTS)) 
     {     
      if (Arrays.asList(product).contains(nameOfProduct)) 
      {     
       found = true; 
      } 
      else 
      { 
       counter++; 
      } 
     }   

     return found; 
    } 

但是這不起作用,因爲它允許我爲產品輸入兩次相同的名稱。所以我的問題是,我試圖甚至有可能嗎?如果不是,我怎麼能解決這個問題呢?

任何意見將不勝感激。

+1

這不是它在Java中的工作原理。您需要遍歷每個「Product」對象,並將「nameOfProduct」與「Product」對象的「name」進行比較。 – kosa

+0

@Nambari你能提供一個我會怎樣做的例子嗎? :) –

+1

我知道你在做班級任務,所以我不想爲你做代碼。但是,這裏是骨架,循環產品[],獲取產品,然後將該產品 - >「名稱」與「nameOfProduct」進行比較。 – kosa

回答

1

您需要在Product類中爲您的產品名稱創建get方法,以使您能夠獲取要在陣列的每次迭代中檢查的數據。你不能僅僅比較一個對象和一個字符串而不訪問字符串。

解決方案:

在你的產品類中創建一個getter方法

public String getName() 
{ 
    return this.name; 
} 

迭代的所有產品類別,並通過調用該產品的名稱的getter方法比較兩個字符串

for(int i = 0; i < current_size_product; i++) 
{ 
    if(product[i].getName().contains(string)) 
    //true 
} 
+0

謝謝,我能夠使用你的建議解決問題:) –

+0

@MrPigeon歡迎:)) –

+0

請注意'getName()'在技術上是不必要的。您的程序不需要運行;如果'name'是公共的,你可以使用'product [i] .name'。 「Getter方法」有助於更輕鬆地開發較少漏洞的大型程序,但它們不是絕對的要求。 – immibis

相關問題