2017-06-02 68 views
2

正如標題所說,我想用隨機字符串填充2D數組,在這種情況下「_」和「W」,並且我做了2d數組和一個隨機字符串生成器,但是我可以找到一個遠來用字符串創建的陣列產生如何用隨機字符串填充2D陣列

import java.security.SecureRandom; 

public class Array_Generator { 
public static void main(String[] args) { 

    int row = 5; 
    int col = 5; 
    int[][] grid = new int[row][col]; 
    String AB = "_W"; 
    SecureRandom rnd = new SecureRandom(); 
    for(int i = 0; i < grid.length; i++) { 
     StringBuilder sb = new StringBuilder(row); 
     sb.append(AB.charAt(rnd.nextInt(AB.length()))); 
     sb.toString(); 


    } 
System.out.println(sb); 

如果我這樣做,我得到的行像我想,但我不能找到一個客場做下的。

任何幫助將是apreciated。

+0

那你有sb.toString做()?你正在遍歷一個2d的整數數組,但沒有在那裏放入任何東西,你的問題是詢問一個2d的字符串數組。你在哪裏打印字符串? – CBredlow

回答

1

這裏的方式之一:

import java.security.SecureRandom; 

public class Array_Generator { 

    public static void main(String[] args) { 

     int row = 5; 
     int col = 5; 
     String[][] grid = new String[row][col]; 
     String AB = "_W"; 
     SecureRandom rnd = new SecureRandom(); 
     for (int i = 0; i < grid.length; i++) { 
      StringBuilder sb = new StringBuilder(row); 
      for (int j = 0; j < grid[i].length; j++) { 
       sb.append(AB.charAt(rnd.nextInt(AB.length()))); 
       sb.toString(); 
       grid[i][j] = sb.toString(); 
      } 
     } 

     for (int i = 0; i < grid.length; i++) { 
      for (int j = 0; j < grid[i].length; j++) { 
       System.out.print(""+grid[i][j]); 
      } 
      System.out.println(); 
     } 

    } 
} 

OUTPUT:

WW_W__W__WW__W_ 
__W_WW_WW__WW_W 
__W_W__W_W_W_W_ 
WW_W_WW_W_W_W__ 
WW_W__W___W____ 
+0

你的回答也是正確的,我會將它標記爲正確的,因爲它更完整,謝謝。 – MDordio

+0

我也是,謝謝!祝您節目愉快! –

0

您已使用二維(2D)數組。因爲你需要遍歷這兩個數組。作爲一種解決方案,您可以使用嵌套for循環。

  • 首先將2D數組類型改爲String。
  • Next將sb.toString();添加到該陣列。

然後:

for(int i = 0; i < grid.length; i++){ 
    for(int y = 0; y < grid[i].length; y++){ 
     System.out.println(i + " "); 
     System.out.print(y + " "); 
     //Or - System.out.print(grid[i][y] + " "); 
    } 
} 

或者你可以使用的for-each:

for(String[] i : grid){ 
    for(String y : i){ 
     System.out.print(y + " "); 
    } 
    System.out.println(); 
} 
2

gridint[][]所以它不能持有String秒。改變類型,並在內部循環中分配隨機字符串。

// int[][] grid = new int[row][col]; 
String[][] grid = new String[row][col]; 

... 

// sb.toString(); 
grid[i][j] = sb.toString(); 
+0

是的,就是這樣。謝謝 – MDordio