Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 2D ArrayList初始化行_Java_For Loop_Random_Arraylist_Initialization - Fatal编程技术网

Java 2D ArrayList初始化行

Java 2D ArrayList初始化行,java,for-loop,random,arraylist,initialization,Java,For Loop,Random,Arraylist,Initialization,我正在为一个折叠游戏制作一个2D Arraylist板,但现在只是做一个文本表示。我创建了电路板,但当我尝试用randomChar()填充它时,所有的行都会得到相同的随机字符。 我做错了什么 public static void createBoard(int rSize, int cSize) { ArrayList<Character> row = new ArrayList<Character>(); ArrayList<ArrayList&l

我正在为一个折叠游戏制作一个2D Arraylist板,但现在只是做一个文本表示。我创建了电路板,但当我尝试用randomChar()填充它时,所有的行都会得到相同的随机字符。 我做错了什么

public static void createBoard(int rSize, int cSize) {
    ArrayList<Character> row = new ArrayList<Character>();
    ArrayList<ArrayList<Character>> board = new ArrayList<ArrayList<Character>>();

    for (int c = 0; c < cSize; c++) {
        board.add(row);

    }
    for (int r = 0; r < rSize; r++) {
        board.get(r).add(randomChar());
        //row.add(randomChar());
        // board.get(r).set(r, randomChar());
        }

    //prints out board in table form
    for (ArrayList<Character> r : board) {
        printRow(r);
    }
    System.out.println(board);

    } 
publicstaticvoidcreateboard(intrsize,intcsize){
ArrayList行=新的ArrayList();
ArrayList board=新的ArrayList();
for(int c=0;c
您正在将同一行多次添加到板中。必须添加唯一的行:

for (int c = 0; c < cSize; c++) {
    board.add(new ArrayList<Character>());
}
for(int c=0;c
因为在下一行中存储的是同一对象的引用:

for (int c = 0; c < cSize; c++) {
    board.add(row);
}

啊,好的。我想到了,但没想到会发生。非常感谢。
for (int c = 0; c < cSize; c++) {
    board.add(new ArrayList<Character>());
}