我必须模拟世界属于NxN国家的传染病蔓延。最初世界上将有P人,然后我们必须随机地将人员分配到每个国家。
我遇到的问题是如何为每个国家分配一些人?
如果我有一个像
这样的数组String[][] world = new String[2][2];
我现在有4个国家/地区,我可以将它们显示为使用for循环的网格。
现在,一个国家的世界[0] [0]应该指向一个包含人物的列表。
我在列表中尝试了列表
ArrayList<ArrayList<human>> world2 = new ArrayList<ArrayList<human>>();
ArrayList<human> country1 = new ArrayList<human>();
for(int i=0; i<5; i++){
human h = new human();
country1.add(i,h);
}
world2.add(country1);
ArrayList<human> country2 = new ArrayList<human>();
human h = new human();
country2.add(h);
world2.add(country2);
for (int i=0; i<world2.size(); i++){
System.out.println(world2.get(i));
}
但我如何以网格格式打印?
EDIT1:
String[][] world = new String[2][2];
for (int row = 0; row < world.length; row++) {
System.out.print("|");
for (int col = 0; col < world.length; col++) {
System.out.print(world[row][col] + "| ");
}
System.out.println();
}
输出:
|null| null|
|null| null|
答案 0 :(得分:1)
这将遍历Integers的3D arraylist并打印世界网格中每个[row] [col]的所有Integer的内容。所有你需要做的就是将你的Human对象补充到我有Integer的任何地方。
public ArrayList<ArrayList<ArrayList<Integer>>> create3D()
{
ArrayList<ArrayList<ArrayList<Integer>>> world = new ArrayList<ArrayList<ArrayList<Integer>>>();
for (int row = 0; row < 3; row++)
{
world.add(new ArrayList<ArrayList<Integer>>());
for (int col = 0; col < 3; col++)
{
world.get(row).add(new ArrayList<Integer>());
Random rand = new Random();
int randomNum = rand.nextInt((20 - 1) + 1) + 1;
for(int humanNumber = 0; humanNumber < randomNum; humanNumber++)
world.get(row).get(col).add(humanNumber);
}
System.out.println();
}
return world;
}
public void printHumanGrid(ArrayList<ArrayList<ArrayList<Integer>>> world)
{
for (int row = 0; row < world.size(); row++)
{
for (int col = 0; col < world.get(row).size(); col++)
{
System.out.print("|");
for(int humanNumber = 0; humanNumber < world.get(row).get(col).size(); humanNumber++)
System.out.print(world.get(row).get(col).get(humanNumber) + ",");
System.out.print("|");
}
System.out.println();
}
}
所以我有两个功能,一个用于填充3D arraylist,另一个用于打印出来。运行以下
printHumanGrid(create3D());
输出:
|0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,||0,1,2,3,4,5,6,7,8,9,||0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,|
|0,1,2,3,4,5,6,7,8,9,||0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,||0,1,2,3,|
|0,1,2,3,4,5,6,7,8,9,||0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,||0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,|
每一行都是网格中的一行。您现在可以添加它,也许添加功能来格式化它和诸如此类的东西。祝你好运!