2017-01-10 101 views
0

我必須模擬世界是NxN國家的傳染病傳播。最初世界上會有P人,然後我們必須隨機分配給每個國家的人。NxN格網與國家和每個國家有一些人口

我遇到的問題是,我該如何去分配一些人到每個國家?

如果我有一個數組如

String[][] world = new String[2][2]; 

我有4個國家,現在我可以告訴他們如使用循環的網格。

現在是一個國家的世界[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(); 
     } 

OUTPUT:

|null| null| 
|null| null| 
+0

你是否在'Human'上定義了一個'toString'方法,然後用上面描述的'String'的矩陣進行循環? –

+0

是的,我在人類中有一個toString,目前它返回「Human」。列表方法中的列表是好的,但我面臨的問題是如何以格式打印? – indexOutOfBounds

+0

你能提供你在'String'矩陣例子中引用的預期輸出嗎?此外,您在這種情況下使用的代碼將會有所幫助。 –

回答

1

通過整數的3D數組列表這將循環和打印所有整數的每內容[行] [山口]的世界網格。所有你需要做的就是補充你的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(); 
    } 
} 

所以我ahve兩個功能,一個填補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,| 

每一行都是在網格中的一行。您現在可以添加到它,也許增加功能來格式化它和什麼。祝你好運!

+0

非常感謝:) – indexOutOfBounds