2017-05-25 88 views
0

我有以下類由一個ArrayList構造函數和一個方法組成,用於計算和組合基於它們的分配名稱的對象實例。方法getName()getCost在一個額外的類中提供。這些對象由字符串(名稱)和雙精度(成本)來描述。ArrayList中的實例計數和組合

import java.util.*; 
public class InventoryDemo 
{ 
    public static void takeInventory(List<Product> products) 
    { 
     String[] names = new String[products.size()]; 
     for (int i = 0; i < products.size(); i ++) 
     { 
      String currentName = products.get(i).getName(); 
      names[i] = currentName; 
      double totalCost = products.get(i).getCost(); 
      int quantity = 0; 
      for (int i2 = 1; i2 < products.size() - 1; i2 ++) 
      { 
       if (products.get(i).getName() == products.get(i2).getName()) 
       { 
        quantity ++; 
        totalCost = totalCost + products.get(i2).getCost(); 
       } 
      } 
      System.out.print(currentName + ": Quantity = " + quantity); 
      System.out.println(", Total Cost = " + totalCost); 
     } 
    } 

    public static void main(String []args) 
    {  
     List<Product> products = new ArrayList<Product>();   
      Car car1 = new Car("Jaguar", 1000000.00); 
      products.add(car1); 
      Car car2 = new Car("Neon", 17000.00); 
      products.add(car2); 
      Tool saw1 = new Tool("JigSaw", 149.18); 
      products.add(saw1); 
      Car car3 = new Car("Jaguar", 110000.00); 
      products.add(car3); 
      Car car4 = new Car("Neon", 17500.00); 
      products.add(car4); 
      Car car5 = new Car("Neon", 17875.32); 
      products.add(car5); 
      Truck truck1 = new Truck("RAM", 35700.00); 
      products.add(truck1); 
      Tool saw2 = new Tool("CircularSaw", 200.00); 
      products.add(saw2); 
      Tool saw3 = new Tool("CircularSaw", 150.00); 
      products.add(saw3); 
     takeInventory(products); 
    } 
} 

輸出應該顯示出與它們出現的數量和它們的組合的成本沿着每個特定對象(基於名稱)。但是,它的輸出是非常不正確的。有任何想法嗎?

回答

0

你內心的循環控制變量不正確,因爲它總是在指數1開始,而應該按比例在i + 1開始到外環,因此你的內循環應該是:

for (int i2 = i + 1; i2 < products.size() - 1; i2++) 

另一件事是你」應該比較字符串.equals()

if (products.get(i).getName().equals(products.get(i2).getName())) 
+0

我看到,我使用的是條件運算符而不是String運算符。非常感謝你。 –