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
から始まりますので、
私は、String演算子ではなく条件演算子を使用していました。どうもありがとうございました。 –