我正在制作一个DnD程序,基本上只是跟踪所有内容。我有三个与此问题相关的类,我的主要(它只是执行其他所有内容的集线器),一个Item类,它包含各个单独项的所有属性,还有一个InventoryList类,它基本上只定义了一个邪恶的项目负载(这是一个单独的类,因为4e DnD中的项目数量很多)。我已经决定制作这些项目的数组,并称之为用户库存;首先,是否有更好的方法 - 即使用HashMap或ArrayList?其次,我在以下代码中获得了经典的“错误,无法找到符号”编译器错误(缩写为相关性):
主要方法:
public class DnD {
public static void main (String[] args) throws FileNotFoundException, IOException {
. . .
Item[] myInventory = {Candle}; //error: symbol cannot be found
} //main()
} //DnD
项目方法:
public class Item {
. . .
public static Item Candle = new Item("Candle", 1, "Provides dim light for 2 squares, and lasts for 1 hour.");
public Item(String _name, double _price, String _desc) {
name = _name;
price = priceConverter(_price);
description = _desc;
} //Item()
} //Item
InventoryList方法:
public class InventoryList {
. . .
public InventoryList() {
// I have no idea where to proceed with this.
// Is there a way for me to use this to initialize ...
// ... an Array of Items in this method, to use in the main?
// The Item object stores name, price, and a description; ...
// ... is there a way to create an Array or similar to ...
// ... display all that information at once and hold it together?
}
}
我似乎无法从Item类中召唤主要的项目。我的库存(项目[])因此而无效。
答案 0 :(得分:1)
对于"找不到符号"错误,您可以像这样解决:
Item[] myInventory = {Item.Candle};
Candle
在类Item
中定义,因此您还必须输出类名。
关于如何实施InventoryList
,我建议使用ArrayList<Item>
来存储播放器的项目:
private ArrayList<Item> items = new ArrayList<>();
public ArrayList<Item> getItems() {
return items;
}
ArrayList
可以动态更改大小,因此如果您想向玩家的广告资源添加更多项目,您可以非常方便地进行此操作。
答案 1 :(得分:0)
您必须限定静态属性
Item[] myInventory = {Item.Candle};
第二个问题是相当粗暴,做更多研究并提出一个更集中的问题。