将值从ArrayList中的对象传输到数组数独板

时间:2014-07-24 21:55:24

标签: java arrays arraylist printing sudoku

我会解释你的问题:我需要填写这个网格:

static int board[][]=new int[][]
           {{0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0}};

但我希望能够转移我的arraylist objet(ligne,colone,valeur)中的值:

Case case1=new Case(ligne, colone, valeur);
monArrayCase.add(case1);

我已经制作了一个扫描仪和一个打印件来验证我的arraylist编号是否已添加并且有效...

我的主要问题是我打印这个:

System.out.println(Sudoku.board[ligne-1][colone-1]=valeur);

我可以添加数字,但我无法删除它们...也许因为我在数组中这样做...有没有办法从格栅上的arraylist对象打印值?提前感谢。< / p>

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您已经进行了以下设置:

  • 您有一些ArrayList<Case>名为monArrayCase,其中包含
  • 最多81 Case s,其中每个Case由一行(ligne),列(cologne)和值(valeur)组成每个范围在1到9之间(因此println语句中的0索引调整)

有了这个,你想要填充你的2D数组。 如果我向后移动,请跳到最后

编写一些方法来操纵电路板中的单元格:

static void insertCaseToBoard(Case case) {
    Sudoku.board[case.ligne-1][case.colone-1] = case.valeur;
}

static void removeCaseFromBoard(int ligne, int colone) {
    Sudoku.board[ligne-1][colone-1] = 0;
}

static void clearBoard() {
    for (int i = 0; i < 9; i++) {
        for (int j = 0; j < 9; j++) {
            Sudoku.board[i][j] = 0;
        }
    }
}

一个迭代ArrayList<Case>并插入所有值:

static void fillBoard(ArrayList<Case> inArray) {
    clearBoard();
    for (Case aCase in inArray) {
        insertCaseToBoard(aCase);
    }
}

如果您想在已设置的电路板上填充ArrayList<Case>,请执行更简单的操作:

static ArrayList<Case> listFromBoard() {
    ArrayList<Case> myList = new ArrayList<Case>();
    for (int i = 0; i < 9; i++) {
        for (int j = 0; j < 9; j++) {
            int valeur = Sudoku.board[i][j];
            if (valuer != 0) myList.add(new Case(i+1,j+1,valeur);
        }
    }
}