我正在构建一个包含大量来自游戏(DnD 4e)的硬编码数据的大型程序。为了组织起见,我将其分解为不同的类(单独的.java文件)以避免10k +行无法创建的程序。我正在存储一个名为ArrayList
的{{1}}个对象。每个Item
都包含Item
,String name
和String price
。
问题在于,我将所有项目存储在一个方法String description
中,而Item
存储在另一个方法ArrayList<Item>
中。如何打印InvList
中的每个Item
?我在数组方面更有经验,并且我意识到我可以使用for循环并只是遍历数组,但我并不知道为ArrayLists这样做的方法。
主要方法:
ArrayList<Item>
InvList方法,用于跟踪人员的库存及其管理方法:
public class DnD {
. . .
public static void main(String[] args) {
. . .
System.out.println("The inventory has "+inv.size()+" items.");
inv.add(Item.Candle);
printInv(inv);
} //main()
} //DnD
项目方法,包含所有项目信息和管理方法:
public class InvList {
public static ArrayList<Item> inv = new ArrayList<>();
// I want to create multiples ArrayLists for multiple people, ...
// ... so there will be several here.
} //InvList()
我所做的任何尝试都会导致打印哈希码或出错。我在这里查看了许多关于覆盖public class Item {
. . .
public String name;
public String price;
public String description;
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); //separate method,
description = _desc;
} //Item()
. . .
} //Item
以及未覆盖的帖子,但我还没有找到一个如何从其他课程中这样做的例子;如果一切都在 exact 相同的类/文件中,这些示例似乎都证明了如何做到这一点。我注定要为一切制作一个大型的大型文件吗?或者我可以在这里使用三个不同的类来打印这个类toString()
吗?
旁注:如果我过度使用ArrayList<Item>
字,请告诉我,我试图了解这里可接受的过度格式化。
答案 0 :(得分:0)
正如您所提到的,可以使用toString方法将类哈希码转换为可读输出:
public class Item {
@Override
public String toString() {
return "Name: " + name + ", price: " + price + ", description: " + description;
}
}
打印ArrayList中的项目:
public class InvList {
public static ArrayList<Item> inv = new ArrayList<>();
for (Item item: inv) {
System.out.println(item);
}
}