2017-06-02 66 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