我会解释你的问题:我需要填写这个网格:
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>
答案 0 :(得分:0)
如果我理解正确,您已经进行了以下设置:
ArrayList<Case>
名为monArrayCase
,其中包含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);
}
}
}