正如标题所说我想用随机字符串填充二维数组,在这种情况下" _"和" W",我做了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);
如果我这样做,我会得到我想要的那一排,但是我找不到要去做下一行。
任何帮助都会被贬低。
答案 0 :(得分:2)
grid
是int[][]
,因此无法保留String
。更改类型,并在内部循环中分配随机字符串。
// int[][] grid = new int[row][col];
String[][] grid = new String[row][col];
...
// sb.toString();
grid[i][j] = sb.toString();
答案 1 :(得分: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();
}
}
}
<强>输出:强>
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____
答案 2 :(得分:0)
您使用过二维(2D)数组。因此,您需要遍历两个数组。作为解决方案,您可以使用嵌套for循环。
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();
}