2017-05-25 6 views
0

次のクラスは、ArrayListコンストラクタと、割り当てられた名前に基づいてオブジェクトのインスタンスを数えて結合するためのメソッドで構成されています。 getName()およびgetCostのメソッドは、追加のクラスで提供されています。オブジェクトはString(名前)とdouble(コスト)によって記述されます。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); 
    } 
} 

出力には、表示される番号とその合成コストとともに、特定のオブジェクト(名前に基づいて)が表示されます。しかし、その出力は大きく間違っています。何か案は?それは外側のループに比例してi + 1に開始すべきであるのに対し、それは常にインデックス1から始まりますので、

答えて

0

あなたの内側のループ制御変数が間違っているので、あなたの内側のループは次のようになります。

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

もう一つは、あなたは」文字列を.equals()と比較するはずです。

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

私は、String演算子ではなく条件演算子を使用していました。どうもありがとうございました。 –

関連する問題