2014-06-06 72 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

相关问题