以下是我给出的代码,并告诉他使用。
我没有多少Java经验,但我对OOP有一些了解。
我有一个包含库存商品价格和数量的散列图,我希望能够显示所有这些变量,将它们添加到列表中,并在不同的类中访问价格等。我已经阅读了文档和很多网站,但我仍然不清楚如何使用这些数据。
public class StockData {
public static class Item {
Item(String n, double p, int q) {
name = n;
price = p;
quantity = q;
}
// get methods
public String getName() {
return name;
}
public double getPrice() {
return price;
}
public int getQuantity() {
return quantity;
}
// instance variables
private final String name;
private final double price;
private int quantity;
}
private final static Map<String, Item> stock = new HashMap();
static {
// if you want to have extra stock items, put them in here
// use the same style - keys should be Strings
stock.put("00", new Item("Bath towel", 5.50, 10));
stock.put("11", new Item("Plebney light", 20.00, 5));
stock.put("22", new Item("Gorilla suit", 30.00, 7));
stock.put("33", new Item("Whizz games console", 50.00, 8));
stock.put("44", new Item("Oven", 200.00, 4));
}
public static Map<String, Item> getStock() {
return stock;
}
public static String getName(String key) {
Item item = stock.get(key);
if (item == null) {
return null; // null means no such item
} else {
return item.getName();
}
}
public static double getPrice(String key) {
Item item = stock.get(key);
if (item == null) {
return -1.0; // negative price means no such item
} else {
return item.getPrice();
}
}
public static int getQuantity(String key) {
Item item = stock.get(key);
if (item == null) {
return -1; // negative quantity means no such item
} else {
return item.getQuantity();
}
}
public static void update(String key, int extra) {
Item item = stock.get(key);
if (item != null) {
item.quantity += extra;
}
}
public static void close() {
// Does nothing for this static version.
// Write a statement to close the database when you are using one
}
}
答案 0 :(得分:1)
您可以从任何地方访问此数据,因为它是静态定义的。例如,您可以编写一个Sandbox类来运行如下的主函数:
public class Sandbox {
public static void main (String[] args)
{
for(String key : StockData.getStock().keySet()) {
System.out.println("Item: " + key);
System.out.println("Name: " + StockData.getName(key) +
" Price: " + StockData.getPrice(key) +
" Qty: " + StockData.getQuantity(key));
}
}
}
输出:
Item: 00
Name: Bath towel Price: 5.5 Qty: 10
Item: 11
Name: Plebney light Price: 20.0 Qty: 5
Item: 22
Name: Gorilla suit Price: 30.0 Qty: 7
Item: 33
Name: Whizz games console Price: 50.0 Qty: 8
Item: 44
Name: Oven Price: 200.0 Qty: 4